私はいくつかの画像を持つキャンバスを持っています。私はマウスを右クリックすると、選択した画像が90度回転していることがわかりました。 それは最初の回転のために完全に動作します。 問題は、もう一度クリックすると再び90度回転しないことです。なぜキャンバス上のすべてのUI要素が回転しても、選択したものを回転しようとするだけです
私のコードはここにある:
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;
}
をそれは私の前の問題を解決しましたが、別の問題は、それが発言権をすることができます到着しました私は1つの画像を回転し、直ちに別の画像を回転させた直後に、以前に回転した画像を選択していなくても、現在選択されている画像を右クリックするだけで問題はありますが、選択された画像。どのようにのみキャンバス上で選択した画像を回転させる
**。**
添付プロパティはキャンバスにありますか?いつイベントに登録しますか(1行目で+ =演算子)?あなたのイベントは、ただ1つではなく複数のハンドラを呼び出すようです。もっとコードを投稿できますか? –