Drawing a polygon according to the input coordinates

前端 未结 2 2032
清歌不尽
清歌不尽 2020-12-17 03:35

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

\"enter

相关标签:
2条回答
  • 2020-12-17 04:16

    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

    0 讨论(0)
  • 2020-12-17 04:28

    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);
    
    0 讨论(0)
提交回复
热议问题