簡體   English   中英

如何可視化 pygame 中 2 個掩碼的重疊區域?

[英]How can I visualize the overlapping area of 2 masks in pygame?

當我在 Pygame 中創建掩碼時,例如:

self.mask = pygame.mask.from_surface(self.image) 

我可以看到結果,帶有 Boolean 值的網格嗎?

問題 2,當兩個蒙版重疊時,我可以使重疊可見嗎?

我能看到結果嗎,帶有 Boolean 值的網格。

您只能在屏幕上看到您正在繪制的內容。 無法在屏幕上繪制蒙版,因此您看不到它。

當兩個蒙版重疊時,我可以使重疊可見嗎?

使用pygame.mask.Mask.overlap_mask創建一個包含 2 個掩碼之間的重疊設置位的掩碼
使用pygame.mask.Mask.to_surfaceMask轉換為Surface 例如:

overlap_mask = mask1.overlap_mask(mask2, (offset_x, offset_y))
overlap_surf = overlap_mask.to_surface(setcolor= (255, 0, 0))
overlap_surf.set_colorkey((0, 0, 0))

最小的例子:

重疊像素為紅色。

import pygame, math

pygame.init()
window = pygame.display.set_mode((300, 300))
clock = pygame.time.Clock()

image1 = pygame.image.load("Banana.png")
image2 = pygame.image.load("Bird.png")
rect1 = image1.get_rect(center = (165, 150))
rect2 = image1.get_rect(center = (135, 150))
mask1 = pygame.mask.from_surface(image1)
mask2 = pygame.mask.from_surface(image2)

angle = 0
run = True
while run:
    clock.tick(100)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False 

    angle += 0.01
    rect1.centery = 150 + round(60 * math.sin(angle))        

    offset_x = rect2.x - rect1.x
    offset_y = rect2.y - rect1.y
    overlap_mask = mask1.overlap_mask(mask2, (offset_x, offset_y))
    overlap_surf = overlap_mask.to_surface(setcolor = (255, 0, 0))
    overlap_surf.set_colorkey((0, 0, 0))

    window.fill(0)
    window.blit(image1, rect1)
    window.blit(image2, rect2)
    window.blit(overlap_surf, rect1)
    pygame.display.flip()

pygame.quit()
exit()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM