在WPF中使用鼠标位置移动图像时防止光标闪烁

时间:2014-08-19 22:13:10

标签: wpf image canvas cursor wpf-controls

我有一个图像,当鼠标移动时我正在更新它在画布上的位置。

<Popup Name="floatingTip" AllowsTransparency="True" Placement="Relative" 
       PlacementTarget="{Binding ElementName=MainCanvas}">
            <Image Source="{Binding Name}"
                   Width="{Binding Width}"
                   Height="{Binding Height}"/>
</Popup>

当鼠标进入画布时,我禁用光标:

private void Canvas_MouseEnter(object sender, MouseEventArgs e)
{
   Mouse.OverrideCursor = Cursors.None;
}

当光标在画布内移动时,我会更新弹出窗口的位置,其中包含一个图像:

private void Canvas_MouseMove(object sender, MouseEventArgs e)
{
    if (!floatingTip.IsOpen && currentTool == "staticBrush") 
    {
        floatingTip.IsOpen = true;

    }

    if (currentTool == "staticBrush" && lvDataBinding.SelectedIndex != -1) 
    {
        Point currentPos = e.GetPosition(this);

        floatingTip.HorizontalOffset = currentPos.X - (cursorImage.Width / 2.0);
        floatingTip.VerticalOffset = currentPos.Y - (cursorImage.Height / 2.0);
        cursorImage.Width = 50;
        cursorImage.Height = 50;

    }     
}

当鼠标离开画布时,我将光标设置回Cursors.Arror。

如果图像不在光标下方,也就是说,如果我稍微偏移图像位置,则一切正常。但是如果我将图像直接放在光标下面,图像就会开始用箭头光标闪烁(即使光标被隐藏了)。

1 个答案:

答案 0 :(得分:1)

我明白了。我需要在图像上将IsHitTestVisible设置为false。