问题描述
我正在为像素艺术编写代码,并将 Surface 保存为文件。但是 .set_at() 方法似乎不起作用。
liftA2
tl;博士:
我有一个矩形网格(实际上是 SelectRects),用于存储颜色。当我导出时,我遍历这些矩形并将 export_surface 上的相应像素更改为该颜色。 这似乎不起作用。我试图画一个半径为 1 的圆,但这也不起作用。
解决方法
如果曲面的大小为 32 x 32,则坐标 (32,32) 越界。左上角像素坐标为(0,0),右下角像素坐标为(31,31):
export_surf.set_at((32,32),CYAN)
export_surf = pygame.Surface((32,32))
export_surf.set_at((31,31),CYAN)
坐标 (rect.x
, rect.y
) 也越界,因为 rect
指定了屏幕上的位置。
您必须将 (rect.x
, rect.y
) 除以图块的大小:
export_surf.set_at((rect.x // TILE_SIZE,rect.y // TILE_SIZE),rect.colour)
export_surf.set_at((rect.x,rect.y),rect.colour)