5

我正在使用 python 和 pygame 为图形表示编写捕食者 - 猎物模拟。我正在制作它,以便您实际上可以与生物“互动”(杀死它,选择它并跟随它环游世界等)。现在,当您单击一个生物时,一个粗圆圈(由 gfxdraw 类中的各种抗锯齿圆圈组成)环绕它,这意味着您已成功选择它。

我的目标是使那个圆圈透明,但根据文档,您不能为绘制的表面设置 alpha 值。我已经看到了矩形的解决方案(通过创建一个单独的半透明表面,对其进行 blitting,然后在其上绘制矩形),但不是用于半实心圆。

你有什么建议?谢谢 :)

4

1 回答 1

9

看看下面的示例代码:

import pygame

pygame.init()
screen = pygame.display.set_mode((300, 300))
ck = (127, 33, 33)
size = 25
while True:
  if pygame.event.get(pygame.MOUSEBUTTONDOWN):
    s = pygame.Surface((50, 50))

    # first, "erase" the surface by filling it with a color and
    # setting this color as colorkey, so the surface is empty
    s.fill(ck)
    s.set_colorkey(ck)

    pygame.draw.circle(s, (255, 0, 0), (size, size), size, 2)

    # after drawing the circle, we can set the 
    # alpha value (transparency) of the surface
    s.set_alpha(75)

    x, y = pygame.mouse.get_pos()
    screen.blit(s, (x-size, y-size))

  pygame.event.poll()
  pygame.display.flip()

在此处输入图像描述

于 2013-07-11T07:08:41.937 回答