在WPF中按键时旋转图像

时间:2014-08-20 02:34:14

标签: c# wpf image canvas wpf-controls

我有一个弹出窗口内的图像。当我在画布内时,如果键已关闭,我想旋转弹出窗口。我的代码不会更新旋转,除非我离开画布(将鼠标移到画布外),然后再次输入(在画布内移动鼠标)。我确认当键在画布内部时,角度正在更新,所以我不知道为什么它不会更新,除非我退出并重新进入。

<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();
    }
}

这是我的Angle属性,当键关闭时会更新:

double imgAngle;
public double Angle
{
    get { return imgAngle; }
    set
    {
        imgAngle = value;
        OnPropertyChanged("Angle");
    }
}

1 个答案:

答案 0 :(得分:0)

我明白了。要刷新弹出窗口内的旋转,弹出窗口IsOpen需要设置为false,然后再返回true。另一种解决方案是将RotateTransformPopup移至Image