创建新对象时绘制图形
本文关键字:绘制 图形 对象 新对象 创建 | 更新日期: 2023-09-27 18:37:01
我玩了一些我创建的自定义控件,我想为它们绘制一些图形。
我实现了我想要的一切,但我有一个问题,因为对我来说有些奇怪。例如,我尝试制作一个这样的新控件:
public class Square : Control
{
public Square(Point location)
{
this.Size = new Size(100, 100);
this.Location = location;
Draw();
}
public void Draw()
{
Graphics g = this.CreateGraphics();
g.DrawRectangle(Pens.Black, 5, 5, 20, 20);
}
}
这不会绘制任何内容,但是,如果我从另一个操作调用"Draw"方法,例如在窗体上按下按钮,它就可以工作。如果我重写控件的 OnPaint 方法并在此处调用"绘制"方法,它也有效。(我知道我应该在 Paint/OnPaint 中绘制所有绘图,但我这样做只是为了尝试其他事情)
有什么区别?为什么我不能在任何地方调用我的"绘制"方法?
当你在构造函数中调用Draw()
方法时,控件尚未添加到父控件,只是内存中的一个对象,因此调用不起作用。
如果按照 OnPaint()
方法中所说的方式进行调用,则绘制,因为每当需要呈现控件时都会调用此方法。