绘制多边形

时间:2014-04-16 14:44:48

标签: c# winforms drawing picturebox

我想实现类Polygon的方法“Draw” 我有WindForms项目,表单和pictureBox1, 我想在pictureBox1中“绘制”绘制多边形,我有机会移动图像 我不知道如何实现它。求助。

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; }

1 个答案:

答案 0 :(得分:0)

您需要将System.Drawing.Graphics作为参数,并调用Graphics.DrawPolygon()函数。然后在图片框中,覆盖或实现OnPaint()事件,并使用您在OnPaint()中作为参数(eventargs的子项)接收的Graphics调用绘图函数。