如何在wpf中使鼠标悬停事件的图像增长x%?

时间:2009-11-05 21:57:51

标签: c# .net wpf xaml

我有一个包含C#WPF应用程序中的一组图像的ListBox。当图像进入图像区域时,即在MouseEnter事件上,我希望图像增长大约10%。这是为了通知用户鼠标指针现在位于新的“可点击”图像上。有谁知道我怎么能做到这一点?

提前Thanx!

3 个答案:

答案 0 :(得分:13)

我只能粗略地描绘它,但这可以通过IsMouseOverProperty上的触发器来实现,该触发器改变ScaleX&已经放置在元素上的ScaleTransform的Y属性。

修改: 看看克里斯的帖子,这可以起作用:

<Style.Triggers>
  <Trigger Property="IsMouseOver" Value="True">
    <Setter Property="RenderTransform">
      <Setter.Value>
          <ScaleTransform ScaleX="1.5" ScaleY="1.5" />
      </Setter.Value>
    </Setter>
  </Trigger>
</Style.Triggers>

答案 1 :(得分:3)

Learn WPF上的这篇文章展示了如何在鼠标上添加发光效果:

  <Style.Triggers>
    <Trigger Property="IsMouseOver" Value="True">
      <Setter Property="BitmapEffect">
        <Setter.Value>
          <OuterGlowBitmapEffect GlowColor="Red" GlowSize="4"/>
        </Setter.Value>
      </Setter>
    </Trigger>
  </Style.Triggers>

只需用“ScaleTransform”替换“BitmapEffect”设置器就可以了。 Ryan Cromwell's blog上的这篇文章展示了如何在按钮点击上执行此操作。它演示了重要的一点,即将渲染变换中心设置为图像的中心,以便缩放在所有方向上均匀,而不仅仅是从左上角开始。

答案 2 :(得分:0)

注册这两个事件:

private void image1_MouseEnter(object sender, MouseEventArgs e)
{
    Image img = ((Image)sender);
    img.Height = img.ActualHeight * 1.1;

}

private void image1_MouseLeave(object sender, MouseEventArgs e)
{
    Image img = ((Image)sender);
    img.Height /= 1.1;
}