Files
aistudio-wpf-diagram/AIStudio.Wpf.DiagramDesigner/Controls/PointDragThumb.cs
2022-10-28 22:45:39 +08:00

55 lines
1.5 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Media;
namespace AIStudio.Wpf.DiagramDesigner.Controls
{
public class PointDragThumb : Thumb
{
public PointDragThumb()
{
base.DragDelta += new DragDeltaEventHandler(DragThumb_DragDelta);
base.DragStarted += DragThumb_DragStarted;
base.DragCompleted += DragThumb_DragCompleted;
}
private void DragThumb_DragStarted(object sender, DragStartedEventArgs e)
{
}
private void DragThumb_DragCompleted(object sender, DragCompletedEventArgs e)
{
}
void DragThumb_DragDelta(object sender, DragDeltaEventArgs e)
{
if (this.DataContext is PointInfoBase point)
{
double minLeft = double.MaxValue;
double minTop = double.MaxValue;
double left = point.X;
double top = point.Y;
minLeft = double.IsNaN(left) ? 0 : Math.Min(left, minLeft);
minTop = double.IsNaN(top) ? 0 : Math.Min(top, minTop);
double deltaHorizontal = Math.Max(-minLeft, e.HorizontalChange);
double deltaVertical = Math.Max(-minTop, e.VerticalChange);
point.X += deltaHorizontal;
point.Y += deltaVertical;
}
}
}
}