Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.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
C# 保存我在表格上画的东西?_C#_Vb.net_Forms - Fatal编程技术网

C# 保存我在表格上画的东西?

C# 保存我在表格上画的东西?,c#,vb.net,forms,C#,Vb.net,Forms,所以是的 基本上我用图形在表格上画了一些东西。现在如果我在表格上移动一个窗口,我画的东西就会被抹掉 有没有办法保存图形? (我使用的是Windows.Forms)您需要在控件事件中绘制。您必须重新绘制在绘制事件处理程序中绘制的内容。不要从绘制事件处理程序外部绘制到表单(听起来您可能正在这样做) 您可以在绘制事件处理程序中每次重新绘制内容,也可以在屏幕外位图中绘制一次,然后在绘制处理程序中仅显示位图 两者的代码几乎相同,但要绘制屏幕外位图,需要为要绘制的图形上下文设置一个新位图 这说明了使用屏幕外

所以是的

基本上我用图形在表格上画了一些东西。现在如果我在表格上移动一个窗口,我画的东西就会被抹掉

有没有办法保存图形?


(我使用的是Windows.Forms)

您需要在控件事件中绘制。

您必须重新绘制在绘制事件处理程序中绘制的内容。

不要从绘制事件处理程序外部绘制到表单(听起来您可能正在这样做)

您可以在绘制事件处理程序中每次重新绘制内容,也可以在屏幕外位图中绘制一次,然后在绘制处理程序中仅显示位图

两者的代码几乎相同,但要绘制屏幕外位图,需要为要绘制的图形上下文设置一个新位图


这说明了使用屏幕外位图存储图像所需的所有操作。(事实上,如果您从本例中删除屏幕外位图代码,剩下的代码是如何在绘制处理程序中绘制)

看在上帝的份上,我再也不能让它变得清晰了。在内存图形中绘制是一种简单的方法,在绘制事件处理程序中,将图像从内存图形复制到窗体的图形“还有其他方法吗?”-基本上不是。Windows窗体不是保留模式图形系统:它需要每次重新绘制,尽管正如Benny所说,您可以将图形隐藏在某个地方,以尽量减少实际的重新绘制工作。但是如果你想要一个保留模式系统,你在上下文中声明或创建图形“对象”,并且系统需要在需要时绘制它们,那么你需要考虑像WPF之类的东西。