下面的代码展示了一个小型的WinForms应用程序,其中包含一个简单的控件,它绘制了一个圆形。我正在尝试理解
如果我像代码中所示从Main方法中调用Control的Scale方法,它会正确缩放。但是,如果我在Circle的构造函数中调用Scale方法,则不会发生缩放。
我的困惑无疑表明我对Scale应该做什么有着严重的误解。能否有人给我指点迷津?
Control.Scale
方法的行为。如果我像代码中所示从Main方法中调用Control的Scale方法,它会正确缩放。但是,如果我在Circle的构造函数中调用Scale方法,则不会发生缩放。
我的困惑无疑表明我对Scale应该做什么有着严重的误解。能否有人给我指点迷津?
using System;
using System.Windows.Forms;
using System.Drawing;
class Program
{
[STAThread]
public static void Main()
{
var circle = new Circle(Color.Orange)
{
Size = new Size(23, 23),
Location = new Point(50, 50)
};
circle.Scale(new SizeF(3.0f, 3.0f)); // <-- scaling here works
var form = new Form();
form.Controls.Add(circle);
Application.Run(form);
}
}
class Circle : Control
{
public Circle(Color color)
{
ForeColor = color;
// Scale(new SizeF(3.0f, 3.0f)); // <-- scaling here DOESN'T work
}
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.FillEllipse(new SolidBrush(ForeColor), ClientRectangle);
}
}