using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Test
{
public partial class Form1 : Form
{
int x1, x2, wid = 100;
public Form1()
{
InitializeComponent();
x1 = this.Width / 2 ;
x2 = this.Height / 2 ;
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawEllipse(Pens.Red, x1,x2, wid, wid);
}
}
}
I want to draw a simple circle in the middle of the form and then later on i want to draw lines coming out from the circle center. How can i do it ?
the properties this.Width and this.Height are the same as this.Bounds which describes itself as:
Gets or sets the size and location of the control including its non-client elements, on pixels, relative to the parent control
this means you'd need to adjust for the thickness of the borders and the title bar. Using this.ClientRectangle avoids that whole issue.
public partial class Form1 : Form
{
int circleDiameter = 100;
public Form1()
{
InitializeComponent();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Point CenterPoint = new Point()
{
X = this.ClientRectangle.Width/2,
Y = this.ClientRectangle.Height/2
};
Point topLeft = new Point()
{
X=(this.ClientRectangle.Width - circleDiameter) / 2,
Y=(this.ClientRectangle.Height - circleDiameter) / 2
};
Point topRight = new Point()
{
X=(this.ClientRectangle.Width + circleDiameter) / 2,
Y=(this.ClientRectangle.Height - circleDiameter) / 2
};
Point bottomLeft = new Point()
{
X=(this.ClientRectangle.Width - circleDiameter) / 2,
Y=(this.ClientRectangle.Height + circleDiameter) / 2
};
Point bottomRight = new Point()
{
X=(this.ClientRectangle.Width + circleDiameter) / 2,
Y=(this.ClientRectangle.Height + circleDiameter) / 2
};
e.Graphics.DrawRectangle(Pens.Red, topLeft.X, topLeft.Y, circleDiameter, circleDiameter);
e.Graphics.DrawLine(Pens.Red, CenterPoint, topLeft);
e.Graphics.DrawLine(Pens.Red, CenterPoint, topRight);
e.Graphics.DrawLine(Pens.Red, CenterPoint, bottomLeft);
e.Graphics.DrawLine(Pens.Red, CenterPoint, bottomRight);
}
private void Form1_Resize(object sender, EventArgs e)
{
this.Invalidate();
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With