边缘伪影#
在处理图像时,尤其是具有透明度的图像,图形卡可以在其边缘创建图形伪像。图片在不需要的地方可以有“边框”。例如,在左上角有一条线:

这一切为什么要发生?我们怎么解决这个问题呢?
为什么会出现边缘伪影#
当图像的边缘没有整齐地落在图像上时,就会发生这种情况。
边缘未对齐#
通常,当图像的边缘没有落在精确的像素边界上时,就会出现边缘瑕疵。在下面的图1中,左边的图像是128个像素的正方形,以(100,100)绘制,看起来很好。右侧的图像以(300.5,100)为中心绘制,并在左侧边缘显示为一条线的人工产物。如果在(100,300.5)而不是(100,300)绘制精灵,则不会出现该瑕疵。

图1:不在整数像素边界上的图像造成的边缘伪影。#
左边缘落在坐标300.5-(128/2)=236.5上。计算机试图选择236到237之间的平均颜色,但由于没有237,我们得到的是深色。通常,仅当边是透明的时才会发生这种情况。
高度或宽度不能被两个整除的形状也会产生瑕疵。如果形状的宽度为15个像素,则中心将落在第7个和第8个像素之间,从而使像素更难与屏幕对齐。
结垢#
缩放图像也会产生瑕疵。在图2中,第二个精灵缩小了三分之二。由于128像素不能均匀缩小三分之二,我们最终得到的是边缘伪像。如果我们缩小了一半,这是可能的128像素(64),所以不会有任何瑕疵。
图2中的第三幅图像放大了两倍。边缘跨越两个像素,我们最终也得到了一条线人工制品。(如果图像可以被四整除,则按2缩小通常有效。扩大规模通常不会。)

图2:缩放导致的边缘伪影。#
旋转#
使用旋转时,很难将像素排列在一起,而且边缘瑕疵很常见。
不正确的视区#
如果窗口的宽度为800,并且视口设为799或801,则也可以显示线条。或者,如果将视口左或右边缘设置为非整数,如23.5,则可能会出现瑕疵。

图3:错误的视区#
解决方案#
将精灵大小保持为2的幂,或者至少具有可被2整除的宽度和高度。对于像素艺术类型的游戏,使用 pixelated
绘图模式将极大地减少问题。
对齐到最近的像素#
默认情况下,Arade使用名为“线性”的滤镜绘制精灵,该滤镜可实现更平滑的缩放和线条。如果你想要像素级的效果,你可以使用不同的滤镜,称为“最近”。该过滤器还可以减少边缘伪影的问题。
启用最近的筛选器 pixelated
绘制时的参数
def on_draw(self):
self.my_sprite_list.draw(pixelated=True)
复查视区代码#
仔细检查您的视区代码,以确保仅将边设置为整数,并且窗口的大小完全匹配,没有任何偏离1的错误。