在WPF中,按下键旋转图像
本文关键字:旋转 图像 WPF | 更新日期: 2023-09-27 18:18:56
我有一个图像是在一个弹出。当我在画布中,如果一个键按下了,我想要旋转弹出框。我的代码不更新旋转,除非我离开画布(移动鼠标到画布外),然后再次进入(移动鼠标到画布内)。我确认角度正在更新时,关键是在画布内,所以我不知道为什么它不更新,除非我退出并重新进入。
<Popup Name="floatingTip"
AllowsTransparency="True"
Placement="Relative"
PlacementTarget="{Binding ElementName=MainCanvas}">
<Popup.RenderTransform>
<RotateTransform CenterX="1" CenterY="1" Angle="{Binding Angle}"/>
</Popup.RenderTransform>
<Image Source="{Binding Name}"
Width="{Binding Width}"
Height="{Binding Height}"/>
</Popup>
当鼠标进入画布空间时,我设置CanvasIsActive = true
。下面是KeyDown事件:
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (CanvasIsActive && currentTool == "staticBrush")
{
cursorImage.Angle += 20;
this.Title = cursorImage.Angle.ToString();
}
}
这是我的角度属性,当键按下时更新:
double imgAngle;
public double Angle
{
get { return imgAngle; }
set
{
imgAngle = value;
OnPropertyChanged("Angle");
}
}
我明白了。要刷新弹出框内的旋转,需要将弹出框IsOpen
设置为false
,然后再设置为true
。另一个解决方案是将RotateTransform
从Popup
移动到Image
。