在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");
    }
}

在WPF中,按下键旋转图像

我明白了。要刷新弹出框内的旋转,需要将弹出框IsOpen设置为false,然后再设置为true。另一个解决方案是将RotateTransformPopup移动到Image