简体   繁体   中英

Drawing polygon

I want to realize method "Draw" of class Polygon I have WindForms project, form, and the pictureBox1, I want that "Draw" drawing polygon in pictureBox1 and I have opportunity to move image I don't konw how to realize it. Help, please.

public class Polygon
{
  public Point[] vertexes { get; protected set; }
  public Polygon(params int[] vertex)
        {
            if (vertex == null || vertex.Length <= 2)
                throw new Exception("someText");
            if (vertex.Length % 2 != 0)
                throw new Exception("someText");
            vertexes = new Point[vertex.Length / 2];
            ColorContour = System.Drawing.Color.DarkRed;
            Priming = false;
            for (int i = 0, j = 0; i < vertexes.Length; i++, j += 2)
                vertexes[i] = new Point(vertex[j], vertex[j + 1]);
            vertexes = Point.Sort(vertexes);
            if (vertexes == null || vertexes.Length <= 2)
                throw new Exception("someText");
        }
        public double Perimetr
        {
            get
            {
                double res = 0;
                    for (int i = 1; i < vertexes.Length; i++)
                        res += Point.Length(vertexes[i - 1], vertexes[i]);
                    return res;

            }
        }

        public override void Move(int deltax, int deltay)
        {
            vertexes[0].x = deltax;
            vertexes[0].y = deltay;
            for (int i = 1; i < vertexes.Length; i++)
            {
                vertexes[i].x -= deltax;
                vertexes[i].y -= deltay;
            }
        }
        public void Zoom(double size)
        {
            if (size == 0)
                return;
            Point firstP = new Point(vertexes[0].x, vertexes[0].y);
            Point Center = Point.CentrMass(vertexes);
            for (int i = 0; i < vertexes.Length; ++i)
            {
                vertexes[i].x = Convert.ToInt32(size * (vertexes[i].x - Center.x) + Center.x);
                vertexes[i].y = Convert.ToInt32(size * (vertexes[i].y - Center.y) + Center.y);
            }
            Move(firstP.x, firstP.y);
        }
        public void Draw( ??)
        {
           **????**
        }
        publicabstract double Square { get; }

You need to take in a System.Drawing.Graphics as a parameter, and call Graphics.DrawPolygon() function. Then in the picturebox, override or implement the OnPaint() event, and call your draw function with the Graphics you receive as a parameter (child of the eventargs) in OnPaint().

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM