У меня есть класс LineG, унаследованный от фигуры, которая будет рисовать простую линию между двумя точками ... Я сделал это, просто добавив два свойства зависимостей StartPointProperty и EndPointProperty ... Наконец, я хочу добавить еще одну функциональность, которая является MidPoint, когда я рисую линию, в середине линии будет середина.
Когда я перетаскиваю StartPoint или EndPoint, форма будет перерисовываться, а когда я перетаскиваю MidPoint, форма будет переводиться в зависимости от изменения MidPoint ...
private static void PropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
LineG lineG = (LineG)d;
if (e.Property.Name == "StartPoint")
{
}
else if (e.Property.Name == "EndPoint")
{
}
else //if MidPoint
{
Point p1 = (Point)e.OldValue;
Point p2 = (Point)e.NewValue;
double offsetX = p2.X - p1.X;
double offsetY = p2.Y - p1.Y;
lineG.StartPoint = new Point(lineG.StartPoint.X + offsetX, lineG.StartPoint.Y + offsetY);
lineG.EndPoint = new Point(lineG.EndPoint.X + offsetX, lineG.EndPoint.Y + offsetY);
lineG.MidPoint = GeneralMethods.MidPoint(lineG.StartPoint, lineG.EndPoint);
}
lineG.InvalidateMeasure();
}
protected override Geometry DefiningGeometry
{
get
{
lg.StartPoint = StartPoint;
lg.EndPoint = EndPoint;
return lg;
}
}