Ejemplo n.º 1
0
        public override void Draw(GraphicsWrapper g, PointF?mousePosition, RectangleF clippingRectangle, RectangleF drawingSpace)
        {
            if (Visible == false)
            {
                return;
            }

            if (_controlPoints.Count < 1)
            {
                return;
            }

            PointF point1 = _controlPoints[0];
            PointF point2;

            if (mousePosition.HasValue)
            {
                point2 = mousePosition.Value;
            }
            else
            {
                point2 = point1;
            }

            if (_controlPoints.Count == 2)
            {
                point2 = _controlPoints[1];
            }

            // Clipping opitmization.
            RectangleF rectangle = new RectangleF(
                Math.Min(point1.X, point2.X), Math.Min(point1.Y, point2.Y),
                Math.Abs(point2.X - point1.X), Math.Abs(point2.Y - point1.Y));

            if (rectangle.IntersectsWith(clippingRectangle) == false)
            {
                return;
            }

            SimpleLine line = new SimpleLine(point1, point2);
            PointF     vec  = new PointF(line.XDelta, line.YDelta);

            vec = g.DrawingSpaceToActualSpace(vec, false);
            vec = new PointF(vec.Y, vec.X);

            // Rotate
            PointF vec1 = SimpleLine.RotatePoint(vec, -(float)Math.PI / 2 + 0.3f);
            PointF vec2 = SimpleLine.RotatePoint(vec, -(float)Math.PI / 2 - 0.3f);

            // Scale
            vec1 = new PointF(vec1.X * 0.35f, vec1.Y * 0.35f);
            vec2 = new PointF(vec2.X * 0.35f, vec2.Y * 0.35f);

            vec1 = g.ActualSpaceToDrawingSpace(vec1, false);
            vec2 = g.ActualSpaceToDrawingSpace(vec2, false);

            g.DrawLine(_pen, point1, point2);
            g.FillPolygon(_brush, new PointF[] { point2, new PointF(point2.X + vec1.X, point2.Y + vec1.Y),
                                                 new PointF(point2.X + vec2.X, point2.Y + vec2.Y) });

            if (Selected)
            {
                DrawControlPoints(g);
            }
        }
Ejemplo n.º 2
0
        public override void Draw(GraphicsWrapper g, PointF? mousePosition, RectangleF clippingRectangle, RectangleF drawingSpace)
        {
            if (Visible == false)
            {
                return;
            }

            if (_controlPoints.Count < 1)
            {
                return;
            }

            PointF point1 = _controlPoints[0];
            PointF point2;

            if (mousePosition.HasValue)
            {
                point2 = mousePosition.Value;
            }
            else
            {
                point2 = point1;
            }

            if (_controlPoints.Count == 2)
            {
                point2 = _controlPoints[1];
            }

            // Clipping opitmization.
            RectangleF rectangle = new RectangleF(
                Math.Min(point1.X, point2.X), Math.Min(point1.Y, point2.Y),
                Math.Abs(point2.X - point1.X), Math.Abs(point2.Y - point1.Y));

            if (rectangle.IntersectsWith(clippingRectangle) == false)
            {
                return;
            }

            SimpleLine line = new SimpleLine(point1, point2);
            PointF vec = new PointF(line.XDelta, line.YDelta);

            vec = g.DrawingSpaceToActualSpace(vec, false);
            vec = new PointF(vec.Y, vec.X);

            // Rotate
            PointF vec1 = SimpleLine.RotatePoint(vec, -(float)Math.PI/2 + 0.3f);
            PointF vec2 = SimpleLine.RotatePoint(vec, -(float)Math.PI/2 -0.3f);

            // Scale
            vec1 = new PointF(vec1.X * 0.35f, vec1.Y * 0.35f);
            vec2 = new PointF(vec2.X * 0.35f, vec2.Y * 0.35f);

            vec1 = g.ActualSpaceToDrawingSpace(vec1, false);
            vec2 = g.ActualSpaceToDrawingSpace(vec2, false);

            g.DrawLine(_pen, point1, point2);
            g.FillPolygon(_brush, new PointF[] { point2, new PointF(point2.X + vec1.X, point2.Y + vec1.Y),
                new PointF(point2.X + vec2.X, point2.Y + vec2.Y) });

            if (Selected)
            {
                DrawControlPoints(g);
            }
        }