Я делаю приложение WPF, которое позволит пользователю рисовать и изменять размеры фигур.
Часть изменения размера выполняется с помощью украшателей, а фигуры - мои собственные классы, полученные из Shape
.
Например, у меня есть Polyline
, и для каждого из его пунктов я украшаю Thumb
с помощью обработчика события DragDelta
:
</p>
<pre><code> void Thumb_DragDelta(object sender, DragDeltaEventArgs e)
{
PolylineEx polyline = this.AdornedElement as PolylineEx;
ResizingThumb thumb = sender as ResizingThumb;
int index = (int)thumb.Tag;
Point newPoint = new Point(
polyline.Points[index].X + e.HorizontalChange,
polyline.Points[index].Y + e.VerticalChange);
Trace.WriteLine(String.Format("Arranging point {0}:{1},{2}", index, newPoint.X, newPoint.Y));
polyline.Points[index] = newPoint;
}
Ну, проблема в том, что иногда (часто) перетаскивание большого пальца совсем не гладко. Сначала я думал, что это проблема производительности, потому что каждый раз создается новый Point
(и другие вещи), но потом я заметил, что иногда точка устанавливается в странных координатах, которые не имеют ничего общего с положением мышь.
Я также загрузил пример проекта ЗДЕСЬ , может ли кто-нибудь, кто знает свой путь по wpf, взглянуть и рассказать мне о том, что происходит?
Кроме того, если кто-то думает о лучшем способе сделать это, любая обратная связь будет высоко оценена.
Спасибо.
Редактировать: ЗДЕСЬ - это новая ссылка на файлы проекта.