C++ cli 在VC&x2B+;2013年,对话框损坏图片盒内容(图纸)

C++ cli 在VC&x2B+;2013年,对话框损坏图片盒内容(图纸),c++-cli,picturebox,C++ Cli,Picturebox,在调用对话框保存表单或打印表单时,我找不到如何保护PictureBox控件中的图形不被损坏(擦除)。表单被保存或打印出来,但对话框离开后会擦除大部分PictureBox绘图。但是表单上的按钮和进度条恢复正常——因此必须有一种方法来“保护”PictureBox绘图。怎么做的 原因是您需要在对话框消失后重新绘制图片框 您的图片框将获得一个绘制事件,它将告诉您需要重新绘制 在这里,使用提供的图形上下文等再次在图片框上绘制。可能您需要编写一个单独的方法来绘制图形,并为初始视图调用它,以及在绘制过程中调用

在调用对话框保存表单或打印表单时,我找不到如何保护PictureBox控件中的图形不被损坏(擦除)。表单被保存或打印出来,但对话框离开后会擦除大部分PictureBox绘图。但是表单上的按钮和进度条恢复正常——因此必须有一种方法来“保护”PictureBox绘图。怎么做的

原因是您需要在对话框消失后重新绘制图片框

您的图片框将获得一个绘制事件,它将告诉您需要重新绘制


在这里,使用提供的图形上下文等再次在图片框上绘制。可能您需要编写一个单独的方法来绘制图形,并为初始视图调用它,以及在绘制过程中调用它。但这取决于您。

如果您的PictureBox中始终只有一张图片,或者您始终使用相同大小的图片,则您可以覆盖此控件的
OnEraseBkgnd
函数,并在退出此函数时返回
TRUE


这样,您的内容就不会被非计划的
OnPaint
OnEraseBkgnd
调用所更改。

任何人都无法在不看到任何代码的情况下知道问题所在。请在你的问题中添加一个。我的水晶球说使用CreateGraphics()是一个bug。嗨,汉斯,这个评论对我来说有点太神秘了。你能扩大一下吗?吉姆·罗伊塔克斯:谢谢你的回答,阿鲁纳斯。我一直在尝试重新绘制picturebox内容,但只是在打印或文件保存之后。正如你所建议的,我现在将尝试这样做,以响应picturebox“绘画”事件。Jim RoweHi Arunas,为了响应PictureBox油漆事件,我尝试了“重新油漆”,但这似乎也不起作用。还有其他建议吗?JimRowejim,正如其他人所提到的,您至少应该提供一些不起作用的代码。我们在这里都是瞎工作,看不见病人。谢谢你的评论,阿马德乌兹,但我不太明白你的道理。我一次只能在PictureBox中有一个图形(基本上是以图形形式绘制的数据),并且不应该有任何“计划外”的OnPaint调用。我将尝试获取更多关于OnEraseBkgnd函数的信息——希望这会有所帮助。吉姆·罗