使用CreateGraphics而不是Paint事件处理程序进行自定义绘图时的绘图故障

我已经编写了Windows Forms应用程序,在上Panel使用进行自定义绘图Control.CreateGraphics()。这是我Form启动时的样子:


与抽奖的空白表格! 纽扣


自定义绘图是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可以将用户定向到,因为这是一种常见情况,如果您还不知道问题的原因,则很难进行搜索。


慕桂英4014372
浏览 460回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP