public void PasteFromClipboard(DDCanvas targetCanvas) { if (targetCanvas == null) { return; } if (Clipboard.ContainsData(DataFormat)) { ClearSelection(); string xaml = Clipboard.GetData(DataFormat) as string; object[] objects = DDTools.ReadMultipleFromXaml(xaml); List <DDObject> pastedObjects = new List <DDObject>(); foreach (object o in objects) { DDObject ddo = DDObject.TryCreateFromCLR(o); if (ddo != null) { pastedObjects.Add(ddo); targetCanvas.Children.Add(ddo); } } SelectObjects(targetCanvas, pastedObjects.ToArray()); if (pastedObjects.Count > 0) { if (ObjectsAdded != null) { ObjectsAdded(this, new EventArgs()); } } } }
internal override void ReportStartDrag(Canvas drawingCanvas, MouseButtonEventArgs args) { base.ReportStartDrag(drawingCanvas, args); if ((drawingCanvas == null) || (args.ChangedButton != MouseButton.Left)) { return; } Point mousePos = args.GetPosition(drawingCanvas); DDObject affectedObject = GetTopmostAtPointOfType(drawingCanvas, typeof(DDObject), mousePos) as DDObject; if (affectedObject == null) { SelectionRect = new DDSelectionRect(mousePos, mousePos); drawingCanvas.Children.Add(SelectionRect); } else { if ((TSFrame == null) || (!TSFrame.Targets.Contains(affectedObject))) { SelectObjects(drawingCanvas, affectedObject); } if (TSFrame != null) { DraggingPoint = new Point(mousePos.X - TSFrame.X, mousePos.Y - TSFrame.Y); } } }
protected void BindFillAndStrokeObject(DDObject target) { if (_boundFillAndStrokeObject == target) { return; } if (_boundFillAndStrokeObject != null) { BindingOperations.ClearBinding(xamlExpanderFillPicker, DDBrushPicker.PickedBrushProperty); BindingOperations.ClearBinding(xamlExpanderStrokePicker, DDBrushPicker.PickedBrushProperty); BindingOperations.ClearBinding(xamlExpanderStrokeThickness, DDNumericUpDown.ValueProperty); BindingOperations.ClearBinding(xamlRectExpanderRadiusX, DDNumericUpDown.ValueProperty); BindingOperations.ClearBinding(xamlRectExpanderRadiusY, DDNumericUpDown.ValueProperty); _boundFillAndStrokeObject = null; } if (target != null) { xamlExpanderFillPicker.SetBinding(DDBrushPicker.PickedBrushProperty, new Binding("Fill") { Source = target, Mode = BindingMode.TwoWay }); xamlExpanderStrokePicker.SetBinding(DDBrushPicker.PickedBrushProperty, new Binding("Stroke") { Source = target, Mode = BindingMode.TwoWay }); xamlExpanderStrokeThickness.SetBinding(DDNumericUpDown.ValueProperty, new Binding("StrokeThickness") { Source = target, Mode = BindingMode.TwoWay }); if (target is DDRectangle) { xamlRectExpanderRadiusX.SetBinding(DDNumericUpDown.ValueProperty, new Binding("CornerRadiusX") { Source = target, Mode = BindingMode.TwoWay }); xamlRectExpanderRadiusY.SetBinding(DDNumericUpDown.ValueProperty, new Binding("CornerRadiusY") { Source = target, Mode = BindingMode.TwoWay }); } } _boundFillAndStrokeObject = target; }
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); DDObject affectedObject = GetTopmostAtPointOfType(drawingCanvas, typeof(DDObject), mousePos) as DDObject; SelectObjects(drawingCanvas, affectedObject); }
protected void NewRect(Canvas drawingCanvas, Point startPoint) { if (drawingCanvas == null) { return; } ClearRect(); DDObject target = CreateTargetObject(); drawingCanvas.Children.Add(target); NORect = new DDNewObjectRect(startPoint, target); NORect.Target = target; drawingCanvas.Children.Add(NORect); }
public DDNewObjectRect(Point startPoint, DDObject target) : this(startPoint, startPoint) { this.Target = Target; }