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事件。
您不应该以这种方式使用Graphics对象;您应该将它的每次使用都包含在一个使用块中,或者确保在每次绘图操作后都将其处理掉。您的代码将留下一个不必要的Graphics对象。
简要示例:
private void MyonPaintOverload()
{
using(Graphics x = this.CreateGraphics())
{
// draw here...
}
}
此外,在Form_Load()
上绘制也不起作用,因为此时窗口实际上不可见;基本上没有什么可借鉴的。
是的,您通常需要在每个循环中重新绘制整个,因为像在窗口上拖动另一个窗口这样简单的东西会"擦除"您的绘图,当它因其他窗口被移走而无效时,您需要重新绘制手动绘制的所有。