【发布时间】:2015-05-24 02:25:37
【问题描述】:
我编写了一个 Windows 窗体应用程序,在其中使用 Control.CreateGraphics() 在 Panel 上进行自定义绘图。这是我的Form 在启动时的样子:
自定义绘图在“Draw!”的Click 事件处理程序的顶部面板上执行按钮。这是我的按钮点击处理程序:
private void drawButton_Click(object sender, EventArgs e)
{
using (Graphics g = drawPanel.CreateGraphics())
{
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
g.Clear(Color.White);
Size size = drawPanel.ClientSize;
Rectangle bounds = drawPanel.ClientRectangle;
bounds.Inflate(-10, -10);
g.FillEllipse(Brushes.LightGreen, bounds);
g.DrawEllipse(Pens.Black, bounds);
}
}
点击drawButton后,表单如下:
成功了!
但是当我通过拖动一个角来缩小表单时......
...并将其扩展回原来的大小,
我画的部分已经消失了!
当我将窗口的一部分拖出屏幕时也会发生这种情况...
...然后将其拖回屏幕:
如果我最小化窗口并恢复它,整个图像都会被删除:
这是什么原因造成的?我怎样才能使我绘制的图形持久化?
注意:我已经创建了这个自我回答的问题,所以我有一个规范的 Q/A 来指导用户,因为这是一个常见的场景,如果你还不知道问题的原因很难搜索到.
【问题讨论】:
-
对于一个规范的问答,你不觉得所有的图像都有点多吗?问题本身可以在此处认真精简,将重点放在答案上。这是一个很容易描述的问题——我画了一些东西,但它消失了。
-
好吧,我认为它们有助于说明常见症状,但您可以随意投反对票。
-
拒绝投票并不能解决问题。我以前没有发现这个问题,但这是我需要开始使用的东西......经常。有很多个问题需要作为重复的问题关闭,但令我困扰的是这个问题太长了,使本来应该是一个简单问题的问题变得不必要地复杂化。很难获得人们想要的信息。我本来只是编辑它,但我注意到即使您打算将其作为规范的问答,您也没有将其设为社区 wiki,因此我不想强加于人。