コード例 #1
0
ファイル: PointHelper.cs プロジェクト: hacklex/Core2D
        /// <summary>
        /// 
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        public override void LeftDown(double x, double y)
        {
            double sx = _editor.Project.Options.SnapToGrid ? Editor.Snap(x, _editor.Project.Options.SnapX) : x;
            double sy = _editor.Project.Options.SnapToGrid ? Editor.Snap(y, _editor.Project.Options.SnapY) : y;
            switch (_currentState)
            {
                case State.None:
                    {
                        _shape = XPoint.Create(sx, sy, _editor.Project.Options.PointShape);

                        if (_editor.Project.Options.TryToConnect)
                        {
                            if (!_editor.TryToSplitLine(x, y, _shape, true))
                            {
                                _editor.AddShape(_shape);
                            }
                        }
                        else
                        {
                            _editor.AddShape(_shape);
                        }
                    }
                    break;
            }
        }
コード例 #2
0
ファイル: ShapeBounds.cs プロジェクト: monocraft/Core2D
 /// <summary>
 /// 
 /// </summary>
 /// <param name="point"></param>
 /// <param name="treshold"></param>
 /// <param name="dx"></param>
 /// <param name="dy"></param>
 /// <returns></returns>
 public static Rect2 GetPointBounds(XPoint point, double treshold, double dx, double dy)
 {
     double radius = treshold / 2.0;
     return new Rect2(
         point.X - radius + dx,
         point.Y - radius + dy,
         treshold,
         treshold);
 }
コード例 #3
0
ファイル: XLineSegment.cs プロジェクト: hacklex/Core2D
 /// <summary>
 /// Creates a new <see cref="XLineSegment"/> instance.
 /// </summary>
 /// <param name="point"></param>
 /// <param name="isStroked"></param>
 /// <param name="isSmoothJoin"></param>
 /// <returns></returns>
 public static XLineSegment Create(
     XPoint point,
     bool isStroked,
     bool isSmoothJoin)
 {
     return new XLineSegment()
     {
         Point = point,
         IsStroked = isStroked,
         IsSmoothJoin = isSmoothJoin
     };
 }
コード例 #4
0
ファイル: XPathFigure.cs プロジェクト: monocraft/Core2D
 /// <summary>
 /// 
 /// </summary>
 /// <param name="startPoint"></param>
 /// <param name="segments"></param>
 /// <param name="isFilled"></param>
 /// <param name="isClosed"></param>
 /// <returns></returns>
 public static XPathFigure Create(
     XPoint startPoint,
     IList<XPathSegment> segments,
     bool isFilled,
     bool isClosed)
 {
     return new XPathFigure()
     {
         StartPoint = startPoint,
         Segments = segments,
         IsFilled = isFilled,
         IsClosed = isClosed
     };
 }
コード例 #5
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="point1"></param>
 /// <param name="point2"></param>
 /// <param name="isStroked"></param>
 /// <param name="isSmoothJoin"></param>
 /// <returns></returns>
 public static XQuadraticBezierSegment Create(
     XPoint point1,
     XPoint point2,
     bool isStroked,
     bool isSmoothJoin)
 {
     return new XQuadraticBezierSegment()
     {
         Point1 = point1,
         Point2 = point2,
         IsStroked = isStroked,
         IsSmoothJoin = isSmoothJoin
     };
 }
コード例 #6
0
ファイル: XPathGeometry.cs プロジェクト: monocraft/Core2D
 /// <summary>
 /// 
 /// </summary>
 /// <param name="point"></param>
 /// <param name="size"></param>
 /// <param name="rotationAngle"></param>
 /// <param name="isLargeArc"></param>
 /// <param name="sweepDirection"></param>
 /// <param name="isStroked"></param>
 /// <param name="isSmoothJoin"></param>
 public void ArcTo(
     XPoint point,
     XPathSize size,
     double rotationAngle,
     bool isLargeArc = false,
     XSweepDirection sweepDirection = XSweepDirection.Clockwise,
     bool isStroked = true,
     bool isSmoothJoin = true)
 {
     var segment = XArcSegment.Create(
         point,
         size,
         rotationAngle,
         isLargeArc,
         sweepDirection,
         isStroked,
         isSmoothJoin);
     _figure.Segments.Add(segment);
 }
コード例 #7
0
ファイル: XArcSegment.cs プロジェクト: hacklex/Core2D
 /// <summary>
 /// Creates a new <see cref="XArcSegment"/> instance.
 /// </summary>
 /// <param name="point"></param>
 /// <param name="size"></param>
 /// <param name="rotationAngle"></param>
 /// <param name="isLargeArc"></param>
 /// <param name="sweepDirection"></param>
 /// <param name="isStroked"></param>
 /// <param name="isSmoothJoin"></param>
 /// <returns></returns>
 public static XArcSegment Create(
     XPoint point,
     XPathSize size,
     double rotationAngle,
     bool isLargeArc,
     XSweepDirection sweepDirection,
     bool isStroked,
     bool isSmoothJoin)
 {
     return new XArcSegment()
     {
         Point = point,
         Size = size,
         RotationAngle = rotationAngle,
         IsLargeArc = isLargeArc,
         SweepDirection = sweepDirection,
         IsStroked = isStroked,
         IsSmoothJoin = isSmoothJoin
     };
 }
コード例 #8
0
ファイル: XLine.cs プロジェクト: monocraft/Core2D
 /// <summary>
 /// 
 /// </summary>
 /// <param name="start"></param>
 /// <param name="end"></param>
 /// <param name="style"></param>
 /// <param name="point"></param>
 /// <param name="isStroked"></param>
 /// <param name="name"></param>
 /// <returns></returns>
 public static XLine Create(
     XPoint start,
     XPoint end,
     ShapeStyle style,
     BaseShape point,
     bool isStroked = true,
     string name = "")
 {
     return new XLine()
     {
         Name = name,
         Style = style,
         IsStroked = isStroked,
         IsFilled = false,
         Data = new Data()
         {
             Bindings = ImmutableArray.Create<ShapeBinding>(),
             Properties = ImmutableArray.Create<ShapeProperty>()
         },
         Start = start,
         End = end
     };
 }
コード例 #9
0
ファイル: TextHelper.cs プロジェクト: hacklex/Core2D
        /// <summary>
        /// 
        /// </summary>
        public override void Remove()
        {
            if (_topLeftHelperPoint != null)
            {
                _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Remove(_topLeftHelperPoint);
                _topLeftHelperPoint = null;
            }

            if (_bottomRightHelperPoint != null)
            {
                _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Remove(_bottomRightHelperPoint);
                _bottomRightHelperPoint = null;
            }
        }
コード例 #10
0
ファイル: ArcHelper.cs プロジェクト: monocraft/Core2D
        /// <summary>
        /// 
        /// </summary>
        public override void ToStateThree()
        {
            if (_ellipse != null)
            {
                _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Remove(_ellipse);
                _ellipse = null;
            }

            _endLine = XLine.Create(0, 0, _style, null);
            _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_endLine);
            _endHelperPoint = XPoint.Create(0, 0, _editor.Project.Options.PointShape);
            _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_endHelperPoint);
        }
コード例 #11
0
ファイル: ArcHelper.cs プロジェクト: monocraft/Core2D
        /// <summary>
        /// 
        /// </summary>
        public override void Remove()
        {
            if (_ellipse != null)
            {
                _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Remove(_ellipse);
                _ellipse = null;
            }

            if (_startLine != null)
            {
                _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Remove(_startLine);
                _startLine = null;
            }

            if (_endLine != null)
            {
                _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Remove(_endLine);
                _endLine = null;
            }

            if (_p1HelperPoint != null)
            {
                _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Remove(_p1HelperPoint);
                _p1HelperPoint = null;
            }

            if (_p2HelperPoint != null)
            {
                _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Remove(_p2HelperPoint);
                _p2HelperPoint = null;
            }

            if (_centerHelperPoint != null)
            {
                _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Remove(_centerHelperPoint);
                _centerHelperPoint = null;
            }

            if (_startHelperPoint != null)
            {
                _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Remove(_startHelperPoint);
                _startHelperPoint = null;
            }

            if (_endHelperPoint != null)
            {
                _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Remove(_endHelperPoint);
                _endHelperPoint = null;
            }

            _style = null;
        }
コード例 #12
0
ファイル: XText.cs プロジェクト: monocraft/Core2D
 /// <summary>
 /// 
 /// </summary>
 /// <param name="topLeft"></param>
 /// <param name="bottomRight"></param>
 /// <param name="style"></param>
 /// <param name="point"></param>
 /// <param name="text"></param>
 /// <param name="isStroked"></param>
 /// <param name="name"></param>
 /// <returns></returns>
 public static XText Create(
     XPoint topLeft,
     XPoint bottomRight,
     ShapeStyle style,
     BaseShape point,
     string text,
     bool isStroked = true,
     string name = "")
 {
     return new XText()
     {
         Name = name,
         Style = style,
         IsStroked = isStroked,
         Data = new Data()
         {
             Bindings = ImmutableArray.Create<ShapeBinding>(),
             Properties = ImmutableArray.Create<ShapeProperty>()
         },
         TopLeft = topLeft,
         BottomRight = bottomRight,
         Text = text
     };
 }
コード例 #13
0
ファイル: PathHelper.cs プロジェクト: hacklex/Core2D
        private void LineLeftDown(double x, double y)
        {
            double sx = _editor.Project.Options.SnapToGrid ? Editor.Snap(x, _editor.Project.Options.SnapX) : x;
            double sy = _editor.Project.Options.SnapToGrid ? Editor.Snap(y, _editor.Project.Options.SnapY) : y;
            switch (_currentState)
            {
                case State.None:
                    {
                        _lineStart = TryToGetConnectionPoint(sx, sy) ?? XPoint.Create(sx, sy, _editor.Project.Options.PointShape);
                        if (!_isInitialized)
                        {
                            InitializeWorkingPath(_lineStart);
                        }
                        else
                        {
                            SetLineStartPointFromLastSegment();
                        }

                        _lineEnd = XPoint.Create(sx, sy, _editor.Project.Options.PointShape);
                        _geometry.LineTo(
                            _lineEnd,
                            _editor.Project.Options.DefaultIsStroked,
                            _editor.Project.Options.DefaultIsSmoothJoin);
                        _editor.Project.CurrentContainer.WorkingLayer.Invalidate();
                        ToStateOne();
                        Move(null);
                        _editor.Project.CurrentContainer.HelperLayer.Invalidate();
                        _currentState = State.One;
                        _editor.CancelAvailable = true;
                    }
                    break;
                case State.One:
                    {
                        _lineEnd.X = sx;
                        _lineEnd.Y = sy;
                        if (_editor.Project.Options.TryToConnect)
                        {
                            var end = TryToGetConnectionPoint(sx, sy);
                            if (end != null)
                            {
                                var figure = _geometry.Figures.LastOrDefault();
                                var line = figure.Segments.LastOrDefault() as XLineSegment;
                                line.Point = end;
                            }
                        }

                        _lineStart = _lineEnd;
                        _lineEnd = XPoint.Create(sx, sy, _editor.Project.Options.PointShape);
                        _geometry.LineTo(_lineEnd,
                            _editor.Project.Options.DefaultIsStroked,
                            _editor.Project.Options.DefaultIsSmoothJoin);
                        _editor.Project.CurrentContainer.WorkingLayer.Invalidate();
                        Move(null);
                        _editor.Project.CurrentContainer.HelperLayer.Invalidate();
                        _currentState = State.One;
                    }
                    break;
            }
        }
コード例 #14
0
ファイル: PathHelper.cs プロジェクト: hacklex/Core2D
 private void ToStateTwoQBezier()
 {
     _style = _editor.Project.Options.HelperStyle;
     _qbezierLine12 = XLine.Create(0, 0, _style, null);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_qbezierLine12);
     _qbezierLine32 = XLine.Create(0, 0, _style, null);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_qbezierLine32);
     _qbezierHelperPoint2 = XPoint.Create(0, 0, _editor.Project.Options.PointShape);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_qbezierHelperPoint2);
 }
コード例 #15
0
ファイル: BezierHelper.cs プロジェクト: monocraft/Core2D
 /// <summary>
 /// 
 /// </summary>
 public override void ToStateOne()
 {
     _style = _editor.Project.Options.HelperStyle;
     _helperPoint1 = XPoint.Create(0, 0, _editor.Project.Options.PointShape);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_helperPoint1);
     _helperPoint4 = XPoint.Create(0, 0, _editor.Project.Options.PointShape);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_helperPoint4);
 }
コード例 #16
0
ファイル: EmfRenderer.cs プロジェクト: monocraft/Core2D
 /// <summary>
 ///
 /// </summary>
 /// <param name="tl"></param>
 /// <param name="br"></param>
 /// <param name="dx"></param>
 /// <param name="dy"></param>
 /// <returns></returns>
 private static Rect2 CreateRect(XPoint tl, XPoint br, double dx, double dy)
 {
     return(Rect2.Create(tl, br, dx, dy));
 }
コード例 #17
0
ファイル: PathHelper.cs プロジェクト: hacklex/Core2D
 private void ToStateThreeBezier()
 {
     _bezierLine43 = XLine.Create(0, 0, _style, null);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_bezierLine43);
     _bezierLine23 = XLine.Create(0, 0, _style, null);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_bezierLine23);
     _bezierHelperPoint3 = XPoint.Create(0, 0, _editor.Project.Options.PointShape);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_bezierHelperPoint3);
 }
コード例 #18
0
ファイル: BezierHelper.cs プロジェクト: monocraft/Core2D
 /// <summary>
 /// 
 /// </summary>
 public override void ToStateThree()
 {
     _line43 = XLine.Create(0, 0, _style, null);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_line43);
     _line23 = XLine.Create(0, 0, _style, null);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_line23);
     _helperPoint3 = XPoint.Create(0, 0, _editor.Project.Options.PointShape);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_helperPoint3);
 }
コード例 #19
0
ファイル: PathHelper.cs プロジェクト: hacklex/Core2D
        private void InitializeWorkingPath(XPoint start)
        {
            _geometry = XPathGeometry.Create(
                new List<XPathFigure>(),
                _editor.Project.Options.DefaultFillRule);

            _geometry.BeginFigure(
                start,
                _editor.Project.Options.DefaultIsFilled,
                _editor.Project.Options.DefaultIsClosed);

            _path = XPath.Create(
                "Path",
                _editor.Project.CurrentStyleLibrary.CurrentStyle,
                _geometry,
                _editor.Project.Options.DefaultIsStroked,
                _editor.Project.Options.DefaultIsFilled);

            _editor.Project.CurrentContainer.WorkingLayer.Shapes = _editor.Project.CurrentContainer.WorkingLayer.Shapes.Add(_path);

            _previousPathTool = _editor.CurrentPathTool;
            _isInitialized = true;
        }
コード例 #20
0
ファイル: BezierHelper.cs プロジェクト: monocraft/Core2D
 /// <summary>
 /// 
 /// </summary>
 public override void ToStateTwo()
 {
     _style = _editor.Project.Options.HelperStyle;
     _line12 = XLine.Create(0, 0, _style, null);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_line12);
     _helperPoint2 = XPoint.Create(0, 0, _editor.Project.Options.PointShape);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_helperPoint2);
 }
コード例 #21
0
ファイル: PathHelper.cs プロジェクト: hacklex/Core2D
        private void QBezierLeftDown(double x, double y)
        {
            double sx = _editor.Project.Options.SnapToGrid ? Editor.Snap(x, _editor.Project.Options.SnapX) : x;
            double sy = _editor.Project.Options.SnapToGrid ? Editor.Snap(y, _editor.Project.Options.SnapY) : y;
            switch (_currentState)
            {
                case State.None:
                    {
                        _qbezierPoint1 = TryToGetConnectionPoint(sx, sy) ?? XPoint.Create(sx, sy, _editor.Project.Options.PointShape);
                        if (!_isInitialized)
                        {
                            InitializeWorkingPath(_qbezierPoint1);
                        }
                        else
                        {
                            SetQBezieFirstPointFromLastSegment();
                        }

                        _qbezierPoint2 = XPoint.Create(sx, sy, _editor.Project.Options.PointShape);
                        _qbezierPoint3 = XPoint.Create(sx, sy, _editor.Project.Options.PointShape);
                        _geometry.QuadraticBezierTo(
                            _qbezierPoint2,
                            _qbezierPoint3,
                            _editor.Project.Options.DefaultIsStroked,
                            _editor.Project.Options.DefaultIsSmoothJoin);
                        _editor.Project.CurrentContainer.WorkingLayer.Invalidate();
                        ToStateOne();
                        Move(null);
                        _editor.Project.CurrentContainer.HelperLayer.Invalidate();
                        _currentState = State.One;
                        _editor.CancelAvailable = true;
                    }
                    break;
                case State.One:
                    {
                        _qbezierPoint3.X = sx;
                        _qbezierPoint3.Y = sy;
                        if (_editor.Project.Options.TryToConnect)
                        {
                            var point2 = TryToGetConnectionPoint(sx, sy);
                            if (point2 != null)
                            {
                                var figure = _geometry.Figures.LastOrDefault();
                                var qbezier = figure.Segments.LastOrDefault() as XQuadraticBezierSegment;
                                qbezier.Point2 = point2;
                                _qbezierPoint3 = point2;
                            }
                        }
                        _editor.Project.CurrentContainer.WorkingLayer.Invalidate();
                        ToStateTwo();
                        Move(null);
                        _editor.Project.CurrentContainer.HelperLayer.Invalidate();
                        _currentState = State.Two;
                    }
                    break;
                case State.Two:
                    {
                        _qbezierPoint2.X = sx;
                        _qbezierPoint2.Y = sy;
                        if (_editor.Project.Options.TryToConnect)
                        {
                            var point1 = TryToGetConnectionPoint(sx, sy);
                            if (point1 != null)
                            {
                                var figure = _geometry.Figures.LastOrDefault();
                                var qbezier = figure.Segments.LastOrDefault() as XQuadraticBezierSegment;
                                qbezier.Point1 = point1;
                                _qbezierPoint2 = point1;
                            }
                        }

                        _qbezierPoint1 = _qbezierPoint3;
                        _qbezierPoint2 = XPoint.Create(sx, sy, _editor.Project.Options.PointShape);
                        _qbezierPoint3 = XPoint.Create(sx, sy, _editor.Project.Options.PointShape);
                        _geometry.QuadraticBezierTo(
                            _qbezierPoint2,
                            _qbezierPoint3,
                            _editor.Project.Options.DefaultIsStroked,
                            _editor.Project.Options.DefaultIsSmoothJoin);
                        _editor.Project.CurrentContainer.WorkingLayer.Invalidate();
                        Remove();
                        ToStateOne();
                        Move(null);
                        _editor.Project.CurrentContainer.HelperLayer.Invalidate();
                        _currentState = State.One;
                    }
                    break;
            }
        }
コード例 #22
0
ファイル: GdiArc.cs プロジェクト: hacklex/Core2D
        /// <summary>
        /// 
        /// </summary>
        /// <param name="p1"></param>
        /// <param name="p2"></param>
        /// <param name="p3"></param>
        /// <param name="p4"></param>
        /// <param name="dx"></param>
        /// <param name="dy"></param>
        /// <returns></returns>
        public static GdiArc FromXArc(XPoint p1, XPoint p2, XPoint p3, XPoint p4, double dx, double dy)
        {
            double x1 = p1.X + dx;
            double y1 = p1.Y + dy;
            double x2 = p2.X + dx;
            double y2 = p2.Y + dy;
            double x3 = p3.X + dx;
            double y3 = p3.Y + dy;
            double x4 = p4.X + dx;
            double y4 = p4.Y + dy;
            var rect = Rect2.Create(x1, y1, x2, y2, dx, dy);
            double cx = rect.X + rect.Width / 2.0;
            double cy = rect.Y + rect.Height / 2.0;
            double radiusX = cx - rect.X;
            double radiusY = cy - rect.Y;
            double startAngle = Math.Atan2(y3 - cy, x3 - cx);
            double endAngle = Math.Atan2(y4 - cy, x4 - cx);
            double sweepAngle = (endAngle - startAngle) * 180.0 / Math.PI;

            if (sweepAngle < 0)
                sweepAngle += 360;

            startAngle *= 180.0 / Math.PI;
            endAngle *= 180.0 / Math.PI;

            return new GdiArc
            {
                X = rect.X,
                Y = rect.Y,
                Width = rect.Width,
                Height = rect.Height,
                RadiusX = radiusX,
                RadiusY = radiusY,
                StartAngle = startAngle,
                EndAngle = endAngle,
                SweepAngle = sweepAngle
            };
        }
コード例 #23
0
ファイル: PathHelper.cs プロジェクト: hacklex/Core2D
        private void RemoveLineHelpers()
        {
            if (_lineStartHelperPoint != null)
            {
                _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Remove(_lineStartHelperPoint);
                _lineStartHelperPoint = null;
            }

            if (_lineEndHelperPoint != null)
            {
                _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Remove(_lineEndHelperPoint);
                _lineEndHelperPoint = null;
            }

            _style = null;
        }
コード例 #24
0
ファイル: PathHelper.cs プロジェクト: hacklex/Core2D
        private void RemoveQBezierHelpers()
        {
            if (_qbezierLine12 != null)
            {
                _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Remove(_qbezierLine12);
                _qbezierLine12 = null;
            }

            if (_qbezierLine32 != null)
            {
                _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Remove(_qbezierLine32);
                _qbezierLine32 = null;
            }

            if (_qbezierHelperPoint1 != null)
            {
                _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Remove(_qbezierHelperPoint1);
                _qbezierHelperPoint1 = null;
            }

            if (_qbezierHelperPoint2 != null)
            {
                _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Remove(_qbezierHelperPoint2);
                _qbezierHelperPoint2 = null;
            }

            if (_qbezierHelperPoint3 != null)
            {
                _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Remove(_qbezierHelperPoint3);
                _qbezierHelperPoint3 = null;
            }

            _style = null;
        }
コード例 #25
0
ファイル: XArc.cs プロジェクト: hacklex/Core2D
 /// <summary>
 /// Creates a new <see cref="XArc"/> instance.
 /// </summary>
 /// <param name="point1"></param>
 /// <param name="point2"></param>
 /// <param name="point3"></param>
 /// <param name="point4"></param>
 /// <param name="style"></param>
 /// <param name="point"></param>
 /// <param name="isStroked"></param>
 /// <param name="isFilled"></param>
 /// <param name="name"></param>
 /// <returns></returns>
 public static XArc Create(
     XPoint point1,
     XPoint point2,
     XPoint point3,
     XPoint point4,
     ShapeStyle style,
     BaseShape point,
     bool isStroked = true,
     bool isFilled = false,
     string name = "")
 {
     return new XArc()
     {
         Name = name,
         Style = style,
         IsStroked = isStroked,
         IsFilled = isFilled,
         Data = new Data()
         {
             Bindings = ImmutableArray.Create<Binding>(),
             Properties = ImmutableArray.Create<Property>()
         },
         Point1 = point1,
         Point2 = point2,
         Point3 = point3,
         Point4 = point4
     };
 }
コード例 #26
0
ファイル: PathHelper.cs プロジェクト: hacklex/Core2D
 private void SetQBezieFirstPointFromLastSegment()
 {
     var figure = _geometry.Figures.LastOrDefault();
     if (figure != null)
     {
         var segment = figure.Segments.LastOrDefault();
         if (segment != null)
         {
             if (segment is XLineSegment)
             {
                 _qbezierPoint1 = (segment as XLineSegment).Point;
             }
             else if (segment is XArcSegment)
             {
                 // TODO: Set qbezier first point using last arc point.
             }
             else if (segment is XBezierSegment)
             {
                 _qbezierPoint1 = (segment as XBezierSegment).Point3;
             }
             else if (segment is XQuadraticBezierSegment)
             {
                 _qbezierPoint1 = (segment as XQuadraticBezierSegment).Point2;
             }
         }
         else
         {
             _qbezierPoint1 = figure.StartPoint;
         }
     }
 }
コード例 #27
0
ファイル: ArcHelper.cs プロジェクト: monocraft/Core2D
 /// <summary>
 /// 
 /// </summary>
 public override void ToStateOne()
 {
     _style = _editor.Project.Options.HelperStyle;
     _ellipse = XEllipse.Create(0, 0, _style, null);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_ellipse);
     _p1HelperPoint = XPoint.Create(0, 0, _editor.Project.Options.PointShape);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_p1HelperPoint);
     _p2HelperPoint = XPoint.Create(0, 0, _editor.Project.Options.PointShape);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_p2HelperPoint);
     _centerHelperPoint = XPoint.Create(0, 0, _editor.Project.Options.PointShape);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_centerHelperPoint);
 }
コード例 #28
0
ファイル: PathHelper.cs プロジェクト: hacklex/Core2D
 private void ToStateOneLine()
 {
     _style = _editor.Project.Options.HelperStyle;
     _lineStartHelperPoint = XPoint.Create(0, 0, _editor.Project.Options.PointShape);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_lineStartHelperPoint);
     _lineEndHelperPoint = XPoint.Create(0, 0, _editor.Project.Options.PointShape);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_lineEndHelperPoint);
 }
コード例 #29
0
ファイル: ArcHelper.cs プロジェクト: monocraft/Core2D
        /// <summary>
        /// 
        /// </summary>
        public override void ToStateTwo()
        {
            if (_p1HelperPoint != null)
            {
                _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Remove(_p1HelperPoint);
                _p1HelperPoint = null;
            }

            if (_p2HelperPoint != null)
            {
                _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Remove(_p2HelperPoint);
                _p2HelperPoint = null;
            }

            _startLine = XLine.Create(0, 0, _style, null);
            _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_startLine);
            _startHelperPoint = XPoint.Create(0, 0, _editor.Project.Options.PointShape);
            _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_startHelperPoint);
        }
コード例 #30
0
ファイル: PathHelper.cs プロジェクト: hacklex/Core2D
 private void ToStateOneQBezier()
 {
     _style = _editor.Project.Options.HelperStyle;
     _qbezierHelperPoint1 = XPoint.Create(0, 0, _editor.Project.Options.PointShape);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_qbezierHelperPoint1);
     _qbezierHelperPoint3 = XPoint.Create(0, 0, _editor.Project.Options.PointShape);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_qbezierHelperPoint3);
 }
コード例 #31
0
ファイル: TextHelper.cs プロジェクト: hacklex/Core2D
 /// <summary>
 /// 
 /// </summary>
 public override void ToStateOne()
 {
     _topLeftHelperPoint = XPoint.Create(0, 0, _editor.Project.Options.PointShape);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_topLeftHelperPoint);
     _bottomRightHelperPoint = XPoint.Create(0, 0, _editor.Project.Options.PointShape);
     _editor.Project.CurrentContainer.HelperLayer.Shapes = _editor.Project.CurrentContainer.HelperLayer.Shapes.Add(_bottomRightHelperPoint);
 }
コード例 #32
0
ファイル: Rect2.cs プロジェクト: monocraft/Core2D
 /// <summary>
 ///
 /// </summary>
 /// <param name="tl"></param>
 /// <param name="br"></param>
 /// <param name="dx"></param>
 /// <param name="dy"></param>
 /// <returns></returns>
 public static Rect2 Create(
     XPoint tl, XPoint br,
     double dx = 0.0, double dy = 0.0)
 {
     return(Rect2.Create(tl.X, tl.Y, br.X, br.Y, dx, dy));
 }