【问题标题】:Drawing rectangle doesn't work绘制矩形不起作用
【发布时间】:2014-03-14 19:19:09
【问题描述】:

你能解释一下这段代码有什么问题吗?因为它没有画任何东西。 它不应该在我的表单中绘制一个矩形吗?谢谢!

  public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        Graphics g = this.CreateGraphics();
        Rectangle r = new Rectangle(0, 0, 150, 150);
        g.DrawRectangle(System.Drawing.Pens.Black, r);
    }
}

【问题讨论】:

  • 不要使用CreateGraphics。你不能让它保持刷新。它正在工作...您只是没有时间在表面刷新之前看到它。
  • 将此代码(不带 Creategraphics)移动到 Paint 事件。并确保前面没有控件(面板)。

标签: c# forms graphics drawing shape


【解决方案1】:

使用OnPaint 方法进行绘画:

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);
    Graphics g = e.Graphics;
    Rectangle r = new Rectangle(0, 0, 150, 150);
    g.DrawRectangle(System.Drawing.Pens.Black, r);
}

【讨论】:

  • 虽然这可能有效......但这是一个糟糕的建议。在Form 中覆盖OnPaint 是个坏主意。最好将控件添加到您呈现的表单中。这不是一个愚蠢的练习,这很可能会产生糟糕的长期结果。
  • @DonBoitnott 我不知道 OP 想要实现什么,我只是指出要使用控件(在这种情况下为 Form)正确的方法是在 OnPaint方法。
  • 我应该添加什么控件?
  • 看看OnPaint方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-02
  • 1970-01-01
  • 1970-01-01
  • 2016-06-30
  • 2014-04-30
相关资源
最近更新 更多