【发布时间】:2017-06-27 06:22:59
【问题描述】:
我有一个有几个图像的画布。我已经创建了附加属性,当我在鼠标上单击鼠标右键时,所选图像会旋转 90 度。 它非常适合第一次旋转。 问题是当我再次单击时,它不再旋转 90 度。
我的代码在这里:
sourceElt.MouseRightButtonUp += (sender, e) =>
{
RotateTransform myRotateTransform = new RotateTransform();
DragSourceBase advisorDraggable = GetDragSource(sender as DependencyObject);
if (advisorDraggable.IsDraggable(e.Source as UIElement) == false) return;
sourceElt = e.Source as UIElement;
sourceElt.RenderTransformOrigin = new Point(0.5, 0.5);
myRotateTransform.Angle = 90;
sourceElt.RenderTransform = myRotateTransform;
sourceElt.UpdateLayout();
_isMouseDown = false;
ifDraggedAfterRotation = true;
_offsetPoint = new Point(0, 0);
Mouse.Capture(null);
_draggedElt = null;
e.Handled = true;
}
为了解决之前的问题,我尝试像这样更改我的代码:
RotateTransform myRotateTransform = new RotateTransform(); //kept it outside rigth button click event
sourceElt.MouseRightButtonUp += (sender, e) =>
{
DragSourceBase advisorDraggable = GetDragSource(sender as DependencyObject);
if (advisorDraggable.IsDraggable(e.Source as UIElement) == false) return;
sourceElt = e.Source as UIElement;
sourceElt.RenderTransformOrigin = new Point(0.5, 0.5);
myRotateTransform.Angle += 90; // made it +=
sourceElt.RenderTransform = myRotateTransform;
sourceElt.UpdateLayout();
_isMouseDown = false;
ifDraggedAfterRotation = true;
_offsetPoint = new Point(0, 0);
Mouse.Capture(null);
_draggedElt = null;
e.Handled = true;
}
它解决了我之前的问题,但另一个问题来了,可以说我旋转了一个图像,然后在我旋转另一个图像之后,问题是即使我没有选择以前旋转的图像,我只需右键单击当前选择的图像但它会旋转图像,所有先前选择的图像和当前选择的图像。
** 如何仅在画布上旋转选定的图像。**
【问题讨论】:
-
附加属性在画布上?您何时订阅该事件(第一行中的 += 运算符)?看起来您的事件正在调用多个处理程序,而不仅仅是一个。你能发布更多代码吗?
标签: .net wpf rotation rotatetransform