Drawing a polygon according to the input coordinates

23,833

Solution 1

You didn't show any code because based on those coordinate, you are applying some form of scaling to the image.

Using the Paint event of a PictureBox, here is an example using those coordinates on the screen. It fills in the polygon, then draws the border, then it loops through all the points to draw the red circle:

void pictureBox1_Paint(object sender, PaintEventArgs e) {
  e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
  e.Graphics.Clear(Color.White);

  // draw the shading background:
  List<Point> shadePoints = new List<Point>();
  shadePoints.Add(new Point(0, pictureBox1.ClientSize.Height));
  shadePoints.Add(new Point(pictureBox1.ClientSize.Width, 0));
  shadePoints.Add(new Point(pictureBox1.ClientSize.Width,
                            pictureBox1.ClientSize.Height));
  e.Graphics.FillPolygon(Brushes.LightGray, shadePoints.ToArray());

  // scale the drawing larger:
  using (Matrix m = new Matrix()) {
    m.Scale(4, 4);
    e.Graphics.Transform = m;

    List<Point> polyPoints = new List<Point>();
    polyPoints.Add(new Point(10, 10));
    polyPoints.Add(new Point(12, 35));
    polyPoints.Add(new Point(22, 35));
    polyPoints.Add(new Point(24, 22));

    // use a semi-transparent background brush:
    using (SolidBrush br = new SolidBrush(Color.FromArgb(100, Color.Yellow))) {
      e.Graphics.FillPolygon(br, polyPoints.ToArray());
    }
    e.Graphics.DrawPolygon(Pens.DarkBlue, polyPoints.ToArray());

    foreach (Point p in polyPoints) {
      e.Graphics.FillEllipse(Brushes.Red, 
                             new Rectangle(p.X - 2, p.Y - 2, 4, 4));
    }
  }
}

enter image description here

Solution 2

You may use Graphics.DrawPolygon. You can store the coordinates in an array of Point and then you can pass that to DrawPolygon method. You may wanna see:

Drawing with Graphics in WinForms using C#

private System.Drawing.Graphics g;
System.Drawing.Point[] p = new System.Drawing.Point[6];
p[0].X = 0;
p[0].Y = 0;
p[1].X = 53;
p[1].Y = 111;
p[2].X = 114;
p[2].Y = 86;
p[3].X = 34;
p[3].Y = 34;
p[4].X = 165;
p[4].Y = 7;
g = PictureBox1.CreateGraphics();
g.DrawPolygon(pen1, p);
Share:
23,833
Mehmet
Author by

Mehmet

Updated on August 25, 2020

Comments

  • Mehmet
    Mehmet over 3 years

    How can i draw a polygon according to the input coordinates which are given in C#.

    enter image description here

  • JoanComasFdz
    JoanComasFdz over 11 years
    In WinForms, the control coordinates start at the upper left corner, so you will need to translate them to the lower left corner.
  • Mehmet
    Mehmet over 11 years
    Thanks for answer but i want to see my polygon's corner points diffrent shape or color.. And this code isn't useful. i have corner points and i try to draw a polygon like corner points diffrent . i hope i can tell my problem.. ( link this is my privies question..)
  • Habib
    Habib over 11 years
    @Mehmet, for that you have to draw a circle for each point in the array. You may use DrawEllipse method for that purpose