Я только начинаю изучать систему GDI + для рисования линий, окружностей и т. Д. Я создал компонент (сканер), который наследует панель для рисования (не уверен, что панель или графический блок лучше).
На «Сканере» я сейчас рисую на нем круг.Компонент может быть добавлен в winform, и использование стыковки изменит размер при изменении winform.В данный момент я получаю размер компонента, чтобы вычислить размер круга, но я хочу сказать, что независимо от того, какой размер у компонента, «холст» всегда имеет ширину 300 x 300, поэтому я могу сказать,круг должен быть расположен в 25,25 с размером 250x250.
Как вы можете догадаться из названия "Сканер", я хочу нанести на него точки, но они будут рассчитаны от центра (150,150)location.
Ниже приведен код, который в основном рисует круг.
Большое спасибо за любую помощь в этом.
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));
}
}