Example #1
0
        /// <summary>
        /// Draws point set on the board(graphObj)
        /// </summary>
        /// <param name="graphObj">Graph Object(board) to drawn on</param>
        /// <param name="dx">X region on board</param>
        /// <param name="dy">Y region on board</param>
        /// <param name="zoom">Zoom value</param>
        public override void Draw(Graphics graphObj, int dx, int dy, float zoom)
        {
            Brush myBrush = GetBrush(dx, dy, zoom);
            Pen   myPen   = this.CreatePen(zoom);

            // Create a path and add the object.
            GraphicsPath myPath = new GraphicsPath();

            // To ARRAY
            PointF[] myArr = new PointF[this.points.Count];
            int      i     = 0;

            foreach (PointElement p in this.points)
            {
                myArr[i++] = new PointF((p.X + region.X0 + dx) * zoom,
                                        (p.Y + region.Y0 + dy) * zoom);
            }

            if (myArr.Length < 3 | !this.curved)
            {
                if (closed && myArr.Length >= 3)
                {
                    myPath.AddPolygon(myArr);
                }
                else
                {
                    myPath.AddLines(myArr);
                }
            }
            else
            {
                if (closed)
                {
                    myPath.AddClosedCurve(myArr);
                }
                else
                {
                    myPath.AddCurve(myArr);
                }
            }

            if (this.generateCornerNames && this.closed)
            {
                char letter = 'A';
                foreach (PointF point in myArr)
                {
                    myPath.AddString(letter.ToString(), SystemFonts.CaptionFont.FontFamily,
                                     (int)SystemFonts.CaptionFont.Style, 12,
                                     PolygonHelper.CalculateCornerLetterPoint(point, myArr),
                                     StringFormat.GenericDefault);
                    letter++;
                }
            }
            Matrix translateMatrix = new Matrix();

            translateMatrix.RotateAt(this.Rotation, region.GetActualregion(dx, dy, zoom));
            myPath.Transform(translateMatrix);

            if (this.FillEnabled)
            {
                if (!(this is Cube))
                {
                    graphObj.FillPath(myBrush, myPath);
                }
                if (this.ShowBorder)
                {
                    graphObj.DrawPath(myPen, myPath);
                }
            }
            else
            {
                graphObj.DrawPath(myPen, myPath);
            }

            myPath.Dispose();
            myPen.Dispose();
            if (myBrush != null)
            {
                myBrush.Dispose();
            }
        }