use*_*504 5 macos drawing pygame antialiasing
我在运行OS X的Macbook Pro(非视网膜)上使用Pygame.当我尝试创建抗锯齿线或圆圈时,它似乎是错误的颜色.这是一个例子:
import sys, pygame, random, math
import pygame.gfxdraw
black = (0,0,0)
white = (255, 255, 255)
green = (0, 255, 0)
pygame.init()
size = width, height = 800, 600
screen = pygame.display.set_mode(size)
# make the background
background = pygame.Surface(screen.get_size())
#background.fill(black)
background.fill(white)
while 1:
# handle single events
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE: sys.exit()
screen.blit(background, (0, 0))
pygame.draw.line(screen, green, [0, 0], [50,30], 1)
pygame.draw.aaline(screen, green, [0, 50],[50, 80], True)
pygame.draw.circle(screen, black, [100, 100], 10)
pygame.gfxdraw.aacircle(screen, 100, 130, 10, black)
pygame.display.flip()
Run Code Online (Sandbox Code Playgroud)
这导致:

尽管搜索了 pygame 源代码,但仍无法找到原因。
不过,我确实想出了一个解决方法。实际上是两个。
模块中似乎存在一个错误pygame.gfxdraw,当蓝色值为 0 时,会导致 OS X 中的颜色混乱。如果将蓝色值更改black为 (0,0,1),圆圈看起来会好得多,但仍然有轻微的蓝色调。将其更改为 (0,0,2),它会显示几乎全黑。对我来说没什么意义,但它有效。
编辑:这适用于不包含任何蓝色的背景颜色。看来,在包含 >0 蓝色的背景 RGB 上,圆圈至少需要一定量的蓝色才能防止出现错误。例如,要在 (50,50,50) 背景上获得黑色圆,我能得到的最接近的结果是使用 (0,0,50) 作为圆。任何较低量的蓝色都会导致亮蓝色伪影。
pygame.draw.aaline不过,添加蓝色对于修复 的行为没有帮助。这一定是一个单独的错误。不过,pygame.gfxdraw.line也是抗锯齿的。使用该方法,更改green为 (0,255,1),青色线现在将变为绿色。

| 归档时间: |
|
| 查看次数: |
397 次 |
| 最近记录: |