Pygame中的撤销步骤

1 投票
1 回答
1294 浏览
提问于 2025-04-17 11:55

我在想如何在Python/Pygame中撤销绘图步骤。简单来说,我让鼠标画线,当我点击撤销按钮时,我希望屏幕恢复到最初的状态(也就是在鼠标按下之前的样子)。这是我的代码,但效果不是很好。

copy=screen.copy()
if undoRect.collidepoint(mx,my) and mb[0]==1:
       screen.blit(copy,(0,0))
 if mb[0]==1 and omb[0]==1:
       draw.line(screen,color,(omx,omy),(mx,my),5)

有没有人能理解我的意思,给我一些关于如何制作一个撤销最后绘图的按钮的建议?

谢谢。

附:我对pygame/python还比较陌生,所以请慢一点。

1 个回答

2

你只需要在用户与应用程序互动时保存画面。

比如我写的一个演示绘画应用,使用了opengl,我用了一个最多能存20个元素的列表,每当用户开始新的操作时就更新这个列表。

如果用户点击屏幕,就把当前的画面保存到列表里。如果用户停止点击,就保存新的画面。然后,当你需要回到之前的画面时,只需要从列表中取出最后一个元素,然后把它画到屏幕上。

撰写回答