private void ChangeIsStroked(PathThumb senderThumb, MenuItem menuItem) { var segment = senderThumb.PathPoint.Object as PathSegment; segment.IsStroked = !segment.IsStroked; menuItem.IsChecked = segment.IsStroked; }
private void ChangeIsClosed(PathThumb senderThumb, MenuItem menuItem) { var figure = senderThumb.PathPoint.Object as PathFigure; figure.IsClosed = !figure.IsClosed; menuItem.IsChecked = figure.IsClosed; }
private void SelectThumb(PathThumb mprt) { CommitOrAbortKeyboardOperation(); var points = GetPoints(); Point p = points[mprt.Index].TranslatedPoint; _selectedPoints.Add(mprt.Index, p); mprt.IsPrimarySelection = false; }
protected virtual PathThumb CreateThumb(PlacementAlignment alignment, Cursor cursor, int index, PathPoint pathpoint, Transform transform) { var designerThumb = new PathThumb(index, pathpoint) { Cursor = cursor }; designerThumb.OperationMenu = BuildMenu(pathpoint); designerThumb.InnerRenderTransform = ((Transform)transform.Inverse); if (pathpoint.TargetPathPoint != null) { designerThumb.IsEllipse = true; designerThumb.Foreground = Brushes.Blue; var bnd = new Binding("TranslatedPoint") { Source = pathpoint.TargetPathPoint, Mode = BindingMode.OneWay, Converter = new RelativeToPointConverter(pathpoint) }; designerThumb.SetBinding(PathThumb.RelativeToPointProperty, bnd); } AdornerPanel.SetPlacement(designerThumb, designerThumb.AdornerPlacement); adornerPanel.Children.Add(designerThumb); DragListener drag = new DragListener(designerThumb); drag.Transform = transform; WeakEventManager <DesignerThumb, MouseButtonEventArgs> .AddHandler(designerThumb, "PreviewMouseLeftButtonDown", ResizeThumbOnMouseLeftButtonUp); drag.MouseDown += drag_MouseDown; drag.Started += drag_Started; drag.Changed += drag_Changed; drag.Completed += drag_Completed; return(designerThumb); }
private void ConvertPart(PathThumb senderThumb, PathPartConvertType convertType) { if (senderThumb.PathPoint.ParentObject is PathFigure) { var pathFigure = senderThumb.PathPoint.ParentObject as PathFigure; var pathSegment = senderThumb.PathPoint.Object as PathSegment; var idx = pathFigure.Segments.IndexOf(pathSegment); var point = senderThumb.PathPoint.Point; if (pathSegment is PolyLineSegment) { var poly = pathSegment as PolyLineSegment; var lst = poly.Points.Take(senderThumb.PathPoint.PolyLineIndex); var lst2 = poly.Points.Skip(senderThumb.PathPoint.PolyLineIndex + 1); var p = poly.Points[senderThumb.PathPoint.PolyLineIndex]; pathFigure.Segments.RemoveAt(idx); var p1 = new PolyLineSegment(); p1.Points.AddRange(lst); pathFigure.Segments.Insert(idx, p1); pathSegment = new LineSegment() {Point = p}; pathFigure.Segments.Insert(idx+1, pathSegment); var p2 = new PolyLineSegment(); p2.Points.AddRange(lst2); pathFigure.Segments.Insert(idx+2, p2); idx++; } else if (pathSegment is PolyBezierSegment) { //TODO } else if (pathSegment is PolyQuadraticBezierSegment) { //TODO } pathFigure.Segments.RemoveAt(idx); var midp = senderThumb.PathPoint.ParentPathPoint.Point - ((senderThumb.PathPoint.ParentPathPoint.Point - point) / 2); PathSegment newSegment = null; switch (convertType) { case PathPartConvertType.ToBezierSegment: newSegment = new BezierSegment() { Point1 = midp - new Vector(40, 40), Point2 = midp + new Vector(-40, 40), Point3 = point }; break; case PathPartConvertType.ToQuadricBezierSegment: newSegment = new QuadraticBezierSegment() { Point1 = point - new Vector(40, 40), Point2 = point }; break; case PathPartConvertType.ToArcSegment: newSegment = new ArcSegment() { Point = point, Size = new Size(20, 20) }; break; case PathPartConvertType.insertPoint: pathFigure.Segments.Insert(idx, pathSegment); newSegment = new LineSegment() { Point = midp, }; break; default: newSegment = new LineSegment() { Point = point }; break; } pathFigure.Segments.Insert(idx, newSegment); } this.ExtendedItem.ReapplyAllExtensions(); }
protected virtual PathThumb CreateThumb(PlacementAlignment alignment, Cursor cursor, int index, PathPoint pathpoint, Transform transform) { var designerThumb = new PathThumb(index, pathpoint) {Cursor = cursor}; designerThumb.OperationMenu = BuildMenu(pathpoint); designerThumb.InnerRenderTransform = ((Transform)transform.Inverse); if (pathpoint.TargetPathPoint != null) { designerThumb.IsEllipse = true; designerThumb.Foreground = Brushes.Blue; var bnd = new Binding("TranslatedPoint") { Source = pathpoint.TargetPathPoint, Mode = BindingMode.OneWay, Converter = new RelativeToPointConverter(pathpoint) }; designerThumb.SetBinding(PathThumb.RelativeToPointProperty, bnd); } AdornerPanel.SetPlacement(designerThumb, designerThumb.AdornerPlacement); adornerPanel.Children.Add(designerThumb); DragListener drag = new DragListener(designerThumb); drag.Transform = transform; WeakEventManager<DesignerThumb, MouseButtonEventArgs>.AddHandler(designerThumb, "PreviewMouseLeftButtonDown", ResizeThumbOnMouseLeftButtonUp); drag.MouseDown += drag_MouseDown; drag.Started += drag_Started; drag.Changed += drag_Changed; drag.Completed += drag_Completed; return designerThumb; }
private void ConvertPart(PathThumb senderThumb, PathPartConvertType convertType) { if (senderThumb.PathPoint.ParentObject is PathFigure) { var pathFigure = senderThumb.PathPoint.ParentObject as PathFigure; var pathSegment = senderThumb.PathPoint.Object as PathSegment; var idx = pathFigure.Segments.IndexOf(pathSegment); var point = senderThumb.PathPoint.Point; if (pathSegment is PolyLineSegment) { var poly = pathSegment as PolyLineSegment; var lst = poly.Points.Take(senderThumb.PathPoint.PolyLineIndex); var lst2 = poly.Points.Skip(senderThumb.PathPoint.PolyLineIndex + 1); var p = poly.Points[senderThumb.PathPoint.PolyLineIndex]; pathFigure.Segments.RemoveAt(idx); var p1 = new PolyLineSegment(); p1.Points.AddRange(lst); pathFigure.Segments.Insert(idx, p1); pathSegment = new LineSegment() { Point = p }; pathFigure.Segments.Insert(idx + 1, pathSegment); var p2 = new PolyLineSegment(); p2.Points.AddRange(lst2); pathFigure.Segments.Insert(idx + 2, p2); idx++; } else if (pathSegment is PolyBezierSegment) { //TODO } else if (pathSegment is PolyQuadraticBezierSegment) { //TODO } pathFigure.Segments.RemoveAt(idx); var midp = senderThumb.PathPoint.ParentPathPoint.Point - ((senderThumb.PathPoint.ParentPathPoint.Point - point) / 2); PathSegment newSegment = null; switch (convertType) { case PathPartConvertType.ToBezierSegment: newSegment = new BezierSegment() { Point1 = midp - new Vector(40, 40), Point2 = midp + new Vector(-40, 40), Point3 = point }; break; case PathPartConvertType.ToQuadricBezierSegment: newSegment = new QuadraticBezierSegment() { Point1 = point - new Vector(40, 40), Point2 = point }; break; case PathPartConvertType.ToArcSegment: newSegment = new ArcSegment() { Point = point, Size = new Size(20, 20) }; break; case PathPartConvertType.insertPoint: pathFigure.Segments.Insert(idx, pathSegment); newSegment = new LineSegment() { Point = midp, }; break; default: newSegment = new LineSegment() { Point = point }; break; } pathFigure.Segments.Insert(idx, newSegment); operation = PlacementOperation.Start(extendedItemArray, PlacementType.MovePoint); CommitOperation(); } this.ExtendedItem.ReapplyAllExtensions(); }