我刚刚开始学习GDI +绘制线条,圆圈等系统。我创建了一个组件(扫描仪),它继承了一个Panel来绘制(不确定面板或图片框是最好)。Fix Graphics绘图区域大小
在“扫描仪”我正在其上画一个圆圈。该组件可以添加到winform中,并且在winform调整大小时使用对接将调整大小。此刻,我得到组件的大小来计算圆的大小,但我想要做的事情基本上是说,无论组件大小是多少,“画布”总是300 x 300宽,所以我可以说该圆应位于25,25,大小为250x250。
正如您可能从名称“扫描仪”中猜出的那样,我想在它上面绘制点,但这些将从中心(150,150)位置计算得出。
下面是我有的代码,基本上绘制了圆圈。
非常感谢您的帮助。
public partial class Scanner : Panel
{
public Scanner() {
InitializeComponent();
this.DoubleBuffered = true;
}
protected override void OnPaint(PaintEventArgs e) {
Graphics g = e.Graphics;
Draw(g);
base.OnPaint(e);
}
protected override void OnResize(EventArgs e) {
Graphics g = this.CreateGraphics();
Draw(g);
base.OnResize(e);
}
private void Draw(Graphics g) {
g.Clear(Color.Black);
g.PageUnit = GraphicsUnit.Pixel;
Pen green = new Pen(Color.Green);
Font fnt = new Font("Arial", 10);
SolidBrush sb = new SolidBrush(Color.Red);
int pos = (this.Width < this.Height ? this.Width : this.Height)/2;
int size = (int)(pos * 1.9);
pos -= ((int)size/2);
g.DrawEllipse(green, pos, pos, size, size);
g.DrawString(this.Width.ToString(), fnt, sb, new Point(0, 0));
}
}
我可能失去了一些东西,但是... g.DrawEllipse(绿色,25,25,250,250);做你想要的...? – 2011-05-26 13:42:01
我想在300x300图像上绘制“扫描仪”,然后将该图像转移到窗体上的实际控件上,实际控件的大小可以是任意大小(但始终为正方形),所以如果控件是500x500,那么300x300图像将被放大到500x500。希望这可以帮助 – harag 2011-05-26 14:13:47