Example #1
0
        private void ControlLineEndThumb_DragDelta(object sender, DragDeltaEventArgs e)
        {
            var    thumb    = sender as Thumb;
            Canvas canvas   = ControlLine.ControlLineCanvas.canvas;
            Point  endPos   = ControlLine.End.GetPos(e.HorizontalChange, e.VerticalChange);
            Point  startPos = ControlLine.Start.GetPos();

            if (endPos.X < 0)
            {
                endPos.X = 0;
            }
            else if (endPos.X > canvas.ActualWidth - ControlLine.End.ActualWidth)
            {
                endPos.X = canvas.ActualWidth - ControlLine.End.ActualWidth;
            }
            if (endPos.Y < 0)
            {
                endPos.Y = 0;
            }
            else if (endPos.Y > canvas.ActualHeight - ControlLine.End.ActualHeight)
            {
                endPos.Y = canvas.ActualHeight - ControlLine.End.ActualHeight;
            }

            Vector v = Point.Subtract(endPos, startPos);

            ControlLine.End.SetPos(endPos);
            ControlLine.Mid.SetPos(new Point(startPos.X + v.X / 2, startPos.Y + v.Y / 2));
            ControlLine.UpdateLine();
            thumb.UpdateLayout();
            e.Handled = true;
        }
Example #2
0
        private void ControlLineMidThumb_DragDelta(object sender, DragDeltaEventArgs e)
        {
            var    thumb    = sender as Thumb;
            Canvas canvas   = ControlLine.ControlLineCanvas.canvas;
            Point  startPos = ControlLine.Start.GetPos(e.HorizontalChange, e.VerticalChange);
            Point  midPos   = ControlLine.Mid.GetPos(e.HorizontalChange, e.VerticalChange);
            Point  endPos   = ControlLine.End.GetPos(e.HorizontalChange, e.VerticalChange);

            double canvasWidth  = canvas.ActualWidth;
            double canvasHeight = canvas.ActualHeight;
            double startWidth   = ControlLine.Start.ActualWidth;
            double startHeight  = ControlLine.Start.ActualHeight;
            double endWidth     = ControlLine.End.ActualWidth;
            double endHeight    = ControlLine.End.ActualHeight;

            if (startPos.X < 0)
            {
                double diff = 0 - startPos.X;
                startPos.X += diff;
                midPos.X   += diff;
                endPos.X   += diff;
            }
            else if (startPos.X > canvasWidth - startWidth)
            {
                double diff = startPos.X - canvasWidth + startWidth;
                startPos.X -= diff;
                midPos.X   -= diff;
                endPos.X   -= diff;
            }

            if (startPos.Y < 0)
            {
                double diff = 0 - startPos.Y;
                startPos.Y += diff;
                midPos.Y   += diff;
                endPos.Y   += diff;
            }
            else if (startPos.Y > canvasHeight - startHeight)
            {
                double diff = startPos.Y - canvasHeight + startHeight;
                startPos.Y -= diff;
                midPos.Y   -= diff;
                endPos.Y   -= diff;
            }

            if (endPos.X < 0)
            {
                double diff = 0 - endPos.X;
                startPos.X += diff;
                midPos.X   += diff;
                endPos.X   += diff;
            }
            else if (endPos.X > canvasWidth - endWidth)
            {
                double diff = endPos.X - canvasWidth + endWidth;
                startPos.X -= diff;
                midPos.X   -= diff;
                endPos.X   -= diff;
            }

            if (endPos.Y < 0)
            {
                double diff = 0 - endPos.Y;
                startPos.Y += diff;
                midPos.Y   += diff;
                endPos.Y   += diff;
            }
            else if (endPos.Y > canvasHeight - endHeight)
            {
                double diff = endPos.Y - canvasHeight + endHeight;
                startPos.Y -= diff;
                midPos.Y   -= diff;
                endPos.Y   -= diff;
            }

            ControlLine.Start.SetPos(startPos);
            ControlLine.Mid.SetPos(midPos);
            ControlLine.End.SetPos(endPos);
            ControlLine.UpdateLine();
            thumb.UpdateLayout();
            e.Handled = true;
        }