Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pygame旋转会导致图像结巴_Python_Pygame - Fatal编程技术网

Python Pygame旋转会导致图像结巴

Python Pygame旋转会导致图像结巴,python,pygame,Python,Pygame,我真的不知道为什么这不起作用。旋转会使图像不断上下缩放。我环顾四周,还没有找到解决问题的办法。 主要 模块 还有人能解释为什么这个程序的盒子突然停止旋转吗? 等http://tinypaste.com/82b3b30e“(删除引号,我不允许发布超过2个超链接)从我可以看出,你看到的缩放是旋转操作如何工作的一种人工制品。旋转矩形时,边界框必然大于原始矩形。例如,请参见下图中的蓝色矩形。R是矩形的半径…所以当它旋转时,矩形会扫掉第二幅图中红色圆圈覆盖的区域。旋转的边界框现在是灰色矩形。pygame必

我真的不知道为什么这不起作用。旋转会使图像不断上下缩放。我环顾四周,还没有找到解决问题的办法。 主要 模块

还有人能解释为什么这个程序的盒子突然停止旋转吗?
等http://tinypaste.com/82b3b30e“(删除引号,我不允许发布超过2个超链接)

从我可以看出,你看到的缩放是旋转操作如何工作的一种人工制品。旋转矩形时,边界框必然大于原始矩形。例如,请参见下图中的蓝色矩形。R是矩形的半径…所以当它旋转时,矩形会扫掉第二幅图中红色圆圈覆盖的区域。旋转的边界框现在是灰色矩形。pygame必须同时填充红色区域和灰色区域。pygame使用什么颜色填充填充区域

医生说

除非以90度增量旋转,否则图像将被填充得更大以保持新的大小。如果图像有像素Alpha,填充区域将是透明的。否则pygame将选择与曲面颜色键或左上角像素值匹配的颜色

因此,解决方案是显式设置图像的颜色键或alpha值(在您的情况下,在构建保存的_图像曲面时)。然后,当旋转保存的_图像时,新生成的图像将使用适当的颜色填充填充区域

试一试,看看效果如何


据我所知,您看到的缩放是旋转操作工作原理的一种伪影。旋转矩形时,边界框必然大于原始矩形。例如,请参见下图中的蓝色矩形。R是矩形的半径…所以当它旋转时,矩形会扫掉第二幅图中红色圆圈覆盖的区域。旋转的边界框现在是灰色矩形。pygame必须同时填充红色区域和灰色区域。pygame使用什么颜色填充填充区域

医生说

除非以90度增量旋转,否则图像将被填充得更大以保持新的大小。如果图像有像素Alpha,填充区域将是透明的。否则pygame将选择与曲面颜色键或左上角像素值匹配的颜色

因此,解决方案是显式设置图像的颜色键或alpha值(在您的情况下,在构建保存的_图像曲面时)。然后,当旋转保存的_图像时,新生成的图像将使用适当的颜色填充填充区域

试一试,看看效果如何


在更新过程中,我会不断地将角度增加10,因此最终会超过360。您希望这个角度旋转(方框,angle angle/360*360)会发生什么。所以角度/360*360减去不必要的角度。因此,它只会旋转最小的数量。您使用的是什么版本的Python?角度代码仅适用于版本2(没有来自uuu future uuuuu import division的
)。在Python 3中,angle/360通常是一个浮点,最终会抵消整个角度,而不仅仅是360的倍数。如果对角度只使用整数,为什么不使用模运算呢?这也有一个好处,就是不会自动陷入长期(或因溢流而受苦)。i、 e.角度=角度%360好的,谢谢,从现在开始我将使用模数。在更新中,我会不断地将角度增加10,因此最终它将超过360。你希望这个角度旋转(框,角度/360*360)会发生什么。所以角度/360*360减去不必要的角度。因此,它只会旋转最小的数量。您使用的是什么版本的Python?角度代码仅适用于版本2(没有来自uuu future uuuuu import division的
)。在Python 3中,angle/360通常是一个浮点,最终会抵消整个角度,而不仅仅是360的倍数。如果对角度只使用整数,为什么不使用模运算呢?这也有一个好处,就是不会自动陷入长期(或因溢流而受苦)。i、 e.angle=angle%360好的,谢谢,从现在起我将使用模数。哦,所以我所要做的就是选择一种不同于表面的颜色,pygame将处理其余的:o。所以self.saved_image.set_colorkey((255255))。谢谢你的帮助。哦,所以我所要做的就是选择一种不同于表面的颜色,pygame会处理剩下的:o。所以self.saved_image.set_colorkey((255255))。谢谢你的帮助。