创建新对象时绘制图形

本文关键字:绘制 图形 对象 新对象 创建 | 更新日期: 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() 方法中所说的方式进行调用,则绘制,因为每当需要呈现控件时都会调用此方法。