我正在Windows窗体(C#)中创建一个简单的图形编辑器,并且在画布上使用PictureBox。我想实现“撤消”功能。我正在使用System.Drawing.Graphics绘图。这是我的情况:


如果使用picturebox.CreateGraphics(),则将看到该图形,但实际上不会在图像上绘制(如果此后我调用pictureBox.Image.Save(...),则保存的图像将为空白)。
如果使用Graphics.FromImage(picturebox.Image),则实际上将在图像上绘制图形,但是什么也看不到。


我怎么都可以?

在那之后如何实现撤消功能?我尝试在图形上使用Save()Restore(),但是没有用,也许我误解了这些方法的含义。

最佳答案

您应该避免使用CreateGraphics,因为这是一个临时图形,可以通过最小化表单或使另一个表单与图形区域重叠等方式将其擦除。

要更新PictureBox,只需在更新图形后将其无效即可:

pictureBox1.Invalidate();


撤消重做是另一种野兽。这要求您保留要绘制的事物的列表,并且要撤消某些任务,需要从列表中删除该项目,然后再次从活动列表中重新绘制整个事物。

关于c# - 如何在图片框上绘制并将其保存在Winforms C#中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22047436/

10-13 06:04