Esempio n. 1
0
        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());
                    }
                }
            }
        }
Esempio n. 2
0
        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);
                }
            }
        }
Esempio n. 3
0
        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;
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
 public DDNewObjectRect(Point startPoint, DDObject target)
     : this(startPoint, startPoint)
 {
     this.Target = Target;
 }