【问题标题】:Draw ellipse to form failing绘制椭圆以形成失败
【发布时间】:2016-01-25 08:56:14
【问题描述】:

使用this 作为参考,我尝试在我的表单上绘制一个椭圆,该椭圆没有显示在我自己的自定义坐标处。

因此,我直接从示例中复制了代码,但它仍然没有显示(尝试使用空白表单的新项目)。我已经浏览了该页面,并且确信我没有遗漏任何内容。

来自 MSDN 的代码

System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Red);
System.Drawing.Graphics formGraphics = this.CreateGraphics();
formGraphics.FillEllipse(myBrush, new Rectangle(0,0,200,300));
myBrush.Dispose();
formGraphics.Dispose();

是否有我应该使用/注意的onPaint 方法或未提及的相关方法?

【问题讨论】:

    标签: c# graphics


    【解决方案1】:

    当我这样做时,代码可以完美运行:

    private void button1_Click(object sender, EventArgs e)
        {
            System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Red);
            System.Drawing.Graphics formGraphics = panel1.CreateGraphics();
            formGraphics.FillEllipse(myBrush, new Rectangle(0, 0, 200, 300));
            myBrush.Dispose();
            formGraphics.Dispose();
        }
    

    但我在面板上创建了图形,我在处理图形时倾向于这样做。

    上面的代码在Form_Load 事件中不起作用。它也不会在尚不存在的表单的任何部分上“绘制”(如果您在超出表单边界的区域绘制,然后拉伸表单,新的拉伸区域将不会有绘图。 )

    这是我在点击事件中放置代码时的结果图片:

    你把这段代码放在哪里?

    【讨论】:

    • 嘿,看来我们都在同时处理这个问题,并且相隔几秒钟。我将发布对您的编辑并删除我的条目。
    • 谢谢,是的,我应该提到 Form_Load,他可能要求它在表单打开后绘制。
    • 另外,在表单加载后绘制的另一种方法是使用 Form_Shown() 方法而不是 Form_Load(),在我们的例子中,我们使用了一个按钮,因为这也保证在之后执行表单已完全加载。
    • 虽然这确实绘制了一些像素,但结果是非持久性的,并且会在您调整大小或最小化表单或...时消失... - 所以这基本上是错误绘制之外的任何东西意味着立即消失的方法。 - 由于 OP 甚至要求使用 OnPaint 方法,我建议删除糟糕的 MSDN 示例并使用其 e.Graphics 对象将代码移动到表单的 Paint 事件!
    猜你喜欢
    • 1970-01-01
    • 2022-01-09
    • 2018-12-02
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    相关资源
    最近更新 更多