0
我正在绘制一个项目。其中我没有创建一个可拖动的窗口,用户可以在其中点击单击任何对象并将它移动到不同的位置,就像我们在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;
}
这是单个物体,我可以将它移动到任何我想要的地方而不会有任何混乱。
这里我有三个对象。当我点击他们中的任何一个时,他们会创建一个群集并开始一起移动
非常感谢您的帮助。我完全忘记了我对每个对象使用相同的变换对象。 –