Пример #1
0
        protected override void OnPreviewMouseMove(MouseEventArgs e)
        {
            base.OnPreviewMouseMove(e);

            if (this.IsMouseCaptured)
            {
                if (this.isDragging)
                {
                    Point currentPosition = e.GetPosition(this);

                    double originalLeft = Canvas.GetLeft(ResizeHandles.SelectedElement);

                    double originalTop = Canvas.GetTop(ResizeHandles.SelectedElement);

                    double elementWidth = ResizeHandles.SelectedElement.GetPropertyValue("ActualWidth").ToDouble();

                    double elementHeigth = ResizeHandles.SelectedElement.GetPropertyValue("ActualHeight").ToDouble();

                    double elementLeft = (currentPosition.X - this.startPoint.X) + this.selectedElementOrigins.X;

                    double elementTop = (currentPosition.Y - this.startPoint.Y) + this.selectedElementOrigins.Y;

                    double offsetLeft = elementLeft - originalLeft;

                    double offsetTop = elementTop - originalTop;

                    if (elementLeft < 0)
                    {
                        elementLeft = this.isHandle ? ResizeHandles.HandleSize * -1 : 0;
                    }

                    if (elementTop < 0)
                    {
                        elementTop = this.isHandle ? ResizeHandles.HandleSize * -1 : 0;
                    }

                    if (this.isHandle)
                    {
                        // This moves the handle block
                        ResizeHandles.MoveObject(base.ActualWidth, base.ActualHeight, elementLeft, elementWidth, elementTop, elementHeigth);

                        ResizeHandles.SelectedElement.ResizeElements(elementTop, elementLeft);
                    }
                    else
                    {
                        ResizeHandles.MoveObjects(base.ActualWidth, base.ActualHeight,
                                                  elementLeft, elementWidth, elementTop, elementHeigth,
                                                  offsetLeft, offsetTop);
                    }
                }
            }
        }
Пример #2
0
        public static void MoveObjects(double canvasWidth,
                                       double canvasHeight,
                                       double elementLeft,
                                       double elementWidth,
                                       double elementTop,
                                       double elementHeigth,
                                       double offsetLeft,
                                       double offsetTop
                                       )
        {
            ResizeHandles.MoveObject(canvasWidth, canvasHeight, elementLeft, elementWidth, elementTop, elementHeigth);

            ResizeHandles.SelectedElement.MoveHandles();

            Guid elementId = SelectedElement.GetElementId();

            foreach (UIElement item in canvaselements.Values)
            {
                if (elementId == item.GetElementId())
                {
                    continue;
                }

                SectionCanvas itemCanvas = item.FindParentControlBase(typeof(SectionCanvas)) as SectionCanvas;

                double canvasItemWidth = ResizeHandles.SelectedElement.GetPropertyValue("ActualWidth").ToDouble();

                double canvasItemHeigth = ResizeHandles.SelectedElement.GetPropertyValue("ActualHeight").ToDouble();

                double canvasItemLeft = Canvas.GetLeft(item) + offsetLeft;

                double canvasItemTop = Canvas.GetTop(item) + offsetTop;

                if (canvasItemLeft <= 0 ||
                    canvasItemTop <= 0 ||
                    (canvasItemLeft + canvasItemWidth) > itemCanvas.ActualWidth ||
                    (canvasItemTop + canvasItemHeigth) > itemCanvas.ActualHeight)
                {
                    continue;
                }

                Canvas.SetLeft(item, canvasItemLeft);

                Canvas.SetTop(item, canvasItemTop);

                item.MoveHandles();
            }
        }