python - Pygame 点击图像(不是矩形)

标签 python image pygame rectangles

这是我的代码的一部分,问题在于:

button = pygame.image.load("button1.png")
screen.blit(button, (100, 100))

这张图片看起来像这样:

[ 1

当用户点击图片时,我需要增加一个变量的值。

我尝试了一些解决方案,但大多数解决方案都是在图片上绘制一个“不可见”的矩形,即使有人点击三角形附近的空白区域,变量的值也会增加。

最佳答案

使用 mask module 非常简单.

来自文档:

Useful for fast pixel perfect collision detection. A mask uses 1 bit per-pixel to store which parts collide.


首先,创建一个 Mask从图像

mask = pygame.mask.from_surface(button)

然后,在检查鼠标点击事件时,检查掩码中的点是否为set。 .

这是一个简单的例子:

import pygame

def main():
    pygame.init()
    screen = pygame.display.set_mode((480, 320))
    button = pygame.image.load('button.png').convert_alpha()
    button_pos = (100, 100)
    mask = pygame.mask.from_surface(button)
    x = 0
    while True:
        for e in pygame.event.get():
            if e.type == pygame.QUIT:
                return
            if e.type == pygame.MOUSEBUTTONDOWN:
                try:
                    if mask.get_at((e.pos[0]-button_pos[0], e.pos[1]-button_pos[1])):
                        x += 1
                        print(x)
                except IndexError:
                    pass

        screen.fill((80,80,80))
        screen.blit(button, button_pos)
        pygame.display.flip()

main()

用于测试的示例 button.png:

enter image description here

关于python - Pygame 点击图像(不是矩形),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56562371/

相关文章:

python - QGraphicsItem 是否收到所有鼠标移动?

python - 无法在centos上执行python.3.5.1

python - Keras ANN 的 Pandas 数据框形状不正确

python - 将numpy图像转换为PIL图像会产生奇怪的结果

jquery - 使用 jQuery 在图像上画点

python - 当我运行我的代码时,我的 pygame 代码卡住了

python - ipython 中的制表符完成列表元素

java - 如何创建从数据库获取并保存文件夹的图片的路径?

python - pg.event.set_allowed([pg.KEYDOWN, pg.KEYUP, pg.QUIT]) pygame.error : video system not initialized

python - pygame blitting - 中心