2014-10-20 128 views
0

我使用Tkinter的画布在Python中创建一个游戏,我需要旋转在游戏中的精灵,我一直在使用尝试PI​​L的 'image'.rotate() 然而质量的损失远远过高,在它开始严重滞后之前,不会执行超过20次转换。这可以修复吗?除了手工制作100张图像之外,还有其他选择吗? 这里是我的代码:旋转图像游戏

shipPIL = shipPIL.rotate(math.degrees(increment), expand=True) 
shipTex = ImageTk.PhotoImage(shipPIL) 
canvas.itemconfig(self.object, image=shipTex) 

增量= PI/20

+0

tkinter并不是真正意义上的这个......尝试类似pygame或libtcod或者其他设计围绕游戏开始的东西 – 2014-10-20 18:12:19

回答

3

你真的应该在原始图像保存为一个干净的副本,并旋转它从原来的每次开机。根据你在做什么,将各种旋转缓存在某个地方而不是每次计算它都是一个好主意。

编辑:和TKinter是GUI应用程序,而不是游戏。我推荐Pygame。

+0

要详细了解为什么这样做会失败:每次旋转图像时,都会丢失信息,因为旧像素和新像素之间没有1-1映射。当您重复旋转相同的图像时,错误加起来很快。 – user3757614 2014-10-20 22:41:09

+0

这使得很多道理,我不知道为什么我没有想到从原来的旋转它,谢谢。另外,我已经计划完成与Tkinter一起工作的所有事情,并且对Pygame没有经验,并且由于我的计划正在接受评估,我认为我现在会坚持下去,将来我会使用Pygame不要担心:) – Eykar 2014-10-21 13:23:48

+0

完美的作品,谢谢 – Eykar 2014-10-22 01:03:40