Я работаю над проектом рисования. В котором я создаю окно с возможностью перетаскивания, где пользователь может Щелкните по любому объекту и переместите его в разные положения, как в PhotoShop, с нашими слоями.WFP TranslateTransform Ошибка
Программа, которую я пишу, отлично работает для объекта One на экране, и я могу перейти к любой позиции, которую я хочу, просто перетащив ее. Но когда количество объектов увеличивается, это вызывает очень странную проблему. Когда я нажимаю на любой из объектов, он создает кластер из всех объектов в окнах и начинает применять преобразование ко всему кластеру.
Примечание: Все объект являются Изображения и Контейнер Холст.
Вот несколько изображений и код, который я использую.
private Point _currentPoint;
private Point _ancherPoint;
private bool _isInDrag = false;
private TranslateTransform _transform = new TranslateTransform();
private Image _element;
private void DropList_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
_element = FindAnchestor<Image>((DependencyObject)e.OriginalSource);
if(_element != null)
{
_ancherPoint = e.GetPosition(DropList);
_isInDrag = true;
_element.CaptureMouse();
e.Handled = true;
}
}
private void DropList_MouseMove(object sender, MouseEventArgs e)
{
if(_isInDrag)
{
_currentPoint = e.GetPosition(DropList);
_transform.X += (_currentPoint.X - _ancherPoint.X);
_transform.Y += (_currentPoint.Y - _ancherPoint.Y);
Lbl.Content = _element.Source.ToString();
Source on which transfrom is going to happen
_element.RenderTransform = _transform;
_ancherPoint = _currentPoint;
}
}
private void DropList_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if(_isInDrag)
{
_element.ReleaseMouseCapture();
_isInDrag = false;
e.Handled = true;
}
}
private static T FindAnchestor<T>(DependencyObject current) where T : DependencyObject
{
do
{
if(current is T)
{
return (T)current;
}
current = VisualTreeHelper.GetParent(current);
}
while(current != null);
return null;
}
Это единственный объект, в котором я могу перемещать его в любое место, которое я хочу легко, без каких-либо беспорядков.
Здесь у меня есть три объекта. когда я нажимаю на них, они создают кластер и начинают двигаться вместе.
Большого спасибо за вашу помощь. Я полностью забываю, что я использую один объект преобразования для каждого объекта. –