我已经阅读了CreateGraphics()
将为我们执行此步骤的地方:
我的代码是这样的:
private void Form1_Load(object sender, EventArgs e)
{
grFrom = this.CreateGraphics();
grFrom.FillRectangle(Brushes.Red, this.ClientRectangle);
}
没有红色矩形......但是,当我在Form1_paint
中复制下面的行时,每件事都运行正确。
grFrom.FillRectangle(Brushes.Red, this.ClientRectangle);
所以问题在这里:
e.Graphics
中的Form1_paint
是什么?
CreateGraphics
或e.Graphics
?
答案 0 :(得分:6)
两件事:
Dispose()
。你应该把你的陈述放在一个使用区块内。答案 1 :(得分:1)
您的表单加载调用正在绘制到表单,但随后第一个常规表单绘制事件将覆盖它,因此您永远不会看到它。 (因为这发生在您提交表格之前)
问题就在这里:什么是
e.Graphics in form1_paint?
CreateGraphics或e.Graphics?
我很确定这些是等效的,你需要的是更好地理解windows窗体事件生命周期。
这个答案有相关链接: WinForms event life cycle
答案 2 :(得分:0)
您正在创建一个新的图形对象,它很可能由内存缓冲区支持。从e.Graphics
获得的Graphics对象由缓冲区支持,该缓冲区表示当前窗口的屏幕区域(Window Handle中的窗口,而不是带标题栏的窗口等)。
您始终可以将创建的图形对象中的数据咬合到e.Graphics
上的数据。
我相信有人会比我更详细。