Windows窗体中的图形

本文关键字:图形 窗体 Windows | 更新日期: 2023-09-27 18:00:32

加载表单时,CreateGraphics()不应该返回图形对象吗?

我的意思是,在Form1_Load事件上,我可以写以下内容吗?

Graphics x;
private void Form1_Load(object sender, EventArgs e)
{
    x = this.CreateGraphics();
}

如果没有,为什么?

我想,当你创建一个新表单时,构造函数会启动表单的所有对象。那么为什么不同时启动图形对象呢?

我之所以这么问,是因为当我试图在form_load上画画时,它不会显示我画了什么。

主要原因是:我想创建一个有棋盘的游戏——所以当用户点击新游戏时——首先——我启动棋盘并绘制它。在onPaint事件中,我只想绘制板的当前状态。因此,我认为董事会的初始状态应该借鉴formLoad事件。

Windows窗体中的图形

您不应该以这种方式使用Graphics对象;您应该将它的每次使用都包含在一个使用块中,或者确保在每次绘图操作后都将其处理掉。您的代码将留下一个不必要的Graphics对象。

简要示例:

private void MyonPaintOverload()
{
    using(Graphics x = this.CreateGraphics())
    {
        // draw here...
    }
}

此外,在Form_Load()上绘制也不起作用,因为此时窗口实际上不可见;基本上没有什么可借鉴的。

是的,您通常需要在每个循环中重新绘制整个,因为像在窗口上拖动另一个窗口这样简单的东西会"擦除"您的绘图,当它因其他窗口被移走而无效时,您需要重新绘制手动绘制的所有