如何在图片框上绘图并将其保存在Winforms C#中?

时间:2014-02-26 16:31:26

标签: c# .net winforms image picturebox

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

  • 如果我使用picturebox.CreateGraphics(),那么我会看到图纸,但实际上不会在图像上显示(如果之后我调用了pictureBox.Image.Save(...),则保存的图像将为空白)。

  • 如果我使用Graphics.FromImage(picturebox.Image),那么图片实际上会在图片上制作,但我什么都看不到。

我怎么能同时拥有两者?

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

1 个答案:

答案 0 :(得分:4)

您应该避免使用CreateGraphics,因为这是一个临时绘图,可以通过最小化窗体或使另一个窗体重叠图形区域等来删除。

要更新PictureBox,只需在更新绘图后使其无效:

pictureBox1.Invalidate();

Undo-Redo是一个不同的野兽。这需要您保留要绘制的内容列表,并且为了撤消某些内容,您从列表中删除该项目并从活动列表中重新绘制整个内容。