internal override void ReportMouseClick(Canvas drawingCanvas, MouseButtonEventArgs args) { base.ReportMouseClick(drawingCanvas, args); if (drawingCanvas == null) { return; } Point mousePos = args.GetPosition(drawingCanvas); if (args.ChangedButton == MouseButton.Left) { DrawNode(drawingCanvas, mousePos); } else if (args.ChangedButton == MouseButton.Right) { if (GuideLine != null) { EndDrawing(); } else { DDNodeObject affectedObject = GetTopmostAtPointOfType(drawingCanvas, typeof(DDNodeObject), mousePos) as DDNodeObject; if (affectedObject != null) { TargetObject = affectedObject; StartDrawing(drawingCanvas); } } } else if (args.ChangedButton == MouseButton.Right) { } }
internal override void ReportMouseClick(Canvas drawingCanvas, MouseButtonEventArgs args) { base.ReportMouseClick(drawingCanvas, args); if ((drawingCanvas == null) || (args.ChangedButton != MouseButton.Left)) { return; } Point mousePos = args.GetPosition(drawingCanvas); DDNodeObject affectedObject = GetTopmostAtPointOfType(drawingCanvas, typeof(DDNodeObject), mousePos) as DDNodeObject; if (affectedObject != null) { if (affectedObject == TargetObject) { SetTarget(null); } else { SetTarget(affectedObject); } } else { SetTarget(null); } }
protected void StartDrawing(Canvas drawingCanvas) { if (drawingCanvas == null) { return; } IsDrawing = true; if (TargetObject == null) { TargetObject = CreateNewObject(); drawingCanvas.Children.Add(TargetObject); } if (GuideLine == null) { GuideLine = new DDPenGuideLine(); if (TargetObject.Nodes.Count > 0) { GuideLine.StartPoint = TargetObject.Nodes.Last.Point.Point; GuideLine.EndPoint = TargetObject.Nodes.Last.Point.Point; } drawingCanvas.Children.Add(GuideLine); } }
protected void EndDrawing() { if (TargetObject != null) { if (TargetObject.Nodes.Count < 2) { if (TargetObject.Parent is Canvas) { (TargetObject.Parent as Canvas).Children.Remove(TargetObject); } } else if (ObjectCreated != null) { ObjectCreated(this, new EventArgs()); } TargetObject = null; } if ((GuideLine != null) && (GuideLine.Parent is Canvas)) { (GuideLine.Parent as Canvas).Children.Remove(GuideLine); GuideLine = null; } IsDrawing = false; }
protected void SetTarget(DDNodeObject target) { if (TargetObject != null) { TargetObject.ManipulationState = DDManipulationState.Normal; TargetObject = null; } if (target != null) { TargetObject = target; TargetObject.ManipulationState = DDManipulationState.Edited; } }
private void ConvertButton_Click(object sender, RoutedEventArgs e) { if (!(ToolManager.ActiveTool is DDPickTool)) { return; } DDNodeObject replacementObject = null; if (_convertTarget is DDPolygon) { replacementObject = (_convertTarget as DDPolygon).CloneToPolyline(); } else if (_convertTarget is DDPolyline) { replacementObject = (_convertTarget as DDPolyline).CloneToPolygon(); } if (replacementObject != null) { xamlDrawingCanvas.Children.Remove(_convertTarget); _convertTarget = null; xamlDrawingCanvas.Children.Add(replacementObject); (ToolManager.ActiveTool as DDPickTool).SelectObjects(xamlDrawingCanvas, replacementObject); } }
protected void TSFrameChangedHandler(DDTranslateAndScaleFrame refFrame) { if (refFrame == null) { xamlExpanderSelectionLayout.Visibility = Visibility.Collapsed; BindingOperations.ClearAllBindings(xamlLayoutX); BindingOperations.ClearAllBindings(xamlLayoutY); BindingOperations.ClearAllBindings(xamlLayoutWidth); BindingOperations.ClearAllBindings(xamlLayoutHeight); } else { xamlExpanderSelectionLayout.Visibility = Visibility.Visible; xamlLayoutX.SetBinding(DDNumericUpDown.ValueProperty, new Binding("X") { Source = refFrame, Mode = BindingMode.TwoWay }); xamlLayoutY.SetBinding(DDNumericUpDown.ValueProperty, new Binding("Y") { Source = refFrame, Mode = BindingMode.TwoWay }); xamlLayoutWidth.SetBinding(DDNumericUpDown.ValueProperty, new Binding("Width") { Source = refFrame, Mode = BindingMode.TwoWay }); xamlLayoutHeight.SetBinding(DDNumericUpDown.ValueProperty, new Binding("Height") { Source = refFrame, Mode = BindingMode.TwoWay }); } if ((refFrame != null) && (refFrame.Targets.Count == 1)) { if (!(refFrame.Targets[0] is DDPolyline)) { xamlExpanderFill.Visibility = Visibility.Visible; } xamlExpanderStroke.Visibility = Visibility.Visible; if (refFrame.Targets[0] is DDRectangle) { xamlExpanderRectangle.Visibility = Visibility.Visible; } if (refFrame.Targets[0] is DDPolygon) { _convertTarget = refFrame.Targets[0] as DDNodeObject; xamlExpanderPolygon.Visibility = Visibility.Visible; } if (refFrame.Targets[0] is DDPolyline) { _convertTarget = refFrame.Targets[0] as DDNodeObject; xamlExpanderPolyline.Visibility = Visibility.Visible; } BindFillAndStrokeObject(refFrame.Targets[0]); } else { _convertTarget = null; xamlExpanderFill.Visibility = Visibility.Collapsed; xamlExpanderStroke.Visibility = Visibility.Collapsed; xamlExpanderRectangle.Visibility = Visibility.Collapsed; xamlExpanderPolygon.Visibility = Visibility.Collapsed; xamlExpanderPolyline.Visibility = Visibility.Collapsed; BindFillAndStrokeObject(null); } _activeTSFrame = refFrame; TryAddUndoStep(); }