如何在没有重新绘画的情况下在面板上绘制图像?

时间:2012-01-08 11:08:41

标签: c# winforms

我遇到了问题:我的应用程序需要在面板上绘制一些图像。

我在Paint(..)事件上制作它。

但是如果我移动应用程序窗口然后表单,所有控件都将重新绘制。

我怎样才能摆脱它? 可能是我应该为paiting改变事件? 我试图绘制到Load(..)事件,但应用程序没有以这种方式绘制到面板中。

2 个答案:

答案 0 :(得分:0)

你无法摆脱Repaint()因为这是基本的OS功能。

Imo,你担心调整大小后翻转。要解决此问题,您可以在提供的my answer中执行此操作。

您可以使用Pictureboxes代替绘制它们,顺便说一下,不要忘记启用double buffering

答案 1 :(得分:0)

应用程序仅绘制使用的部件。因此,无论以前看不到的部分是否被揭开(通过移动窗口或其上方的窗口,或调整大小,最小化/最大化等),都需要重新绘制缺失的部分,这就是您所看到的。

如果你不能只重绘零件,你可以使用位图和PictureBox来缓存绘制的数据,这样重绘窗口只需要将位图传输到屏幕而不实际重绘内容位图。

在这种情况下,您将您的东西绘制到位图画布而不是表单画布。