悬停时放大图像缩略图

时间:2009-09-10 13:56:42

标签: silverlight hover image-enlarge

有人可以向我提供一些关于如何在Silverlight中实现控件的建议,该控件显示图像缩略图,当它悬停时,将其放大到更大的尺寸?

3 个答案:

答案 0 :(得分:2)

我为按钮做了类似的事情。这是代码 - 我相信你可以很容易地适应它来处理图像。请注意,我从未真正发布过此代码;这只是我学习Silverlight时的一个实验。不要把它作为最佳实践的一个例子。

XAML:

<UserControl x:Class="GrowingButton.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" Height="300">
    <Grid x:Name="LayoutRoot" Background="White">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>

        <Grid.Resources>
            <Storyboard x:Name="growStoryboard">
                <DoubleAnimation
                    Storyboard.TargetProperty="Width"
                    Storyboard.TargetName="testButton"
                    Duration="0:0:0.1"
                    By="20">
                </DoubleAnimation>
                <DoubleAnimation
                    Storyboard.TargetProperty="Height"
                    Storyboard.TargetName="testButton"
                    Duration="0:0:1"
                    By="-20">
                </DoubleAnimation>
            </Storyboard>
            <Storyboard x:Name="shrinkStoryboard">
                <DoubleAnimation
                    Storyboard.TargetProperty="Width"
                    Storyboard.TargetName="testButton"
                    Duration="0:0:1"
                    By="-20">
                </DoubleAnimation>
                <DoubleAnimation
                    Storyboard.TargetProperty="Height"
                    Storyboard.TargetName="testButton"
                    Duration="0:0:0.1"
                    By="20">
                </DoubleAnimation>
            </Storyboard>
        </Grid.Resources>
        <Button x:Name="testButton" Content="Test" Grid.Column="1" MouseEnter="Button_MouseEnter" MouseLeave="Button_MouseLeave" VerticalAlignment="Center" HorizontalAlignment="Center" Width="50" Height="50">
        </Button>
    </Grid>
</UserControl>

代码:

public partial class Page : UserControl
{
    public Page()
    {
        InitializeComponent();
    }

    private void Button_MouseEnter(object sender, MouseEventArgs e)
    {
        this.shrinkStoryboard.SkipToFill();
        this.growStoryboard.Begin();
    }

    private void Button_MouseLeave(object sender, MouseEventArgs e)
    {
        this.growStoryboard.SkipToFill();
        this.shrinkStoryboard.Begin();
    }
}

答案 1 :(得分:1)

只要您的控件具有MouseOver状态的VisualState,您就可以使用DoubleAnimation(或DoubleAnimationUsingKeyframes)在控件上执行ScaleTransform

为缩略图/图像控件创建不同的VisualStates(在VisualStateGroup中)将为您省去必须在后面的代码中连接事件的麻烦。您还可以在Blend中直观地定义不同的缩放比例,这是一个很好的功能。

答案 2 :(得分:0)

此页面 - Fish Eye Menu有一个示例,可以执行与您想要的类似的操作。出于某种原因,尽管我安装了Silverlight,但它并没有显示Silverlight版本。它可能与它在Silverlight 2中有关。