Wpf 只需更改按钮的背景图像几秒钟

Wpf 只需更改按钮的背景图像几秒钟,wpf,Wpf,我有一个使用按钮的WPF应用程序(惊喜) 我对它进行了样式设计,这样当用户单击按钮时,背景图像将变为红色 我想发生的是,几秒钟后,背景恢复到原来的背景 我不知道该怎么做 这是我目前的代码: <Style x:Key="RoundButtonTemplate" TargetType="Button"> <Setter Property="Template"> <Setter.Value> <C

我有一个使用按钮的WPF应用程序(惊喜)

我对它进行了样式设计,这样当用户单击按钮时,背景图像将变为红色

我想发生的是,几秒钟后,背景恢复到原来的背景

我不知道该怎么做

这是我目前的代码:

<Style x:Key="RoundButtonTemplate" TargetType="Button">
    <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">                       
                    <Border CornerRadius="5" Background="{TemplateBinding Background}"
                            BorderThickness="1">
                        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center">
                        </ContentPresenter>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsFocused" Value="true">
                            <Setter Property="Background">
                                <Setter.Value>
                                    <ImageBrush ImageSource="{StaticResource RedButtonBackGround}"/>
                                </Setter.Value>
                            </Setter>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Setter Property="Width" Value="74"/>
        <Setter Property="Foreground" Value="White"/>
        <Setter Property="Height" Value="27"></Setter>
        <Setter Property="Background">
            <Setter.Value>
                <ImageBrush ImageSource="{StaticResource ButtonBackGround}"/>
            </Setter.Value>
        </Setter>
    </Style>


复制自(由sa_ddam213)



复制自(sa_ddam213)

以下是一个解决方案,用于基于双动画,使用关键帧和不透明度设置背景图像动画

更新-2按钮样式代码(放入您的资源部分)


  • 第一个DoubleAnimationUsingKeyFrames部分将矩形VisibleOncklick的不透明度从1更改为0。2秒后
  • 第二个DoubleAnimationUsingKeyFrames部分将MyBorder的不透明度从0更改为1。2秒后
  • 要使动画速度更快,请使用关键帧更改两个DoubleAnimationUsingKeyFrames部分的关键帧时间参数:
  • 选项

                                           <DoubleAnimationUsingKeyFrames Storyboard.TargetName="RectangleVisibleOnCklick" 
                                       Storyboard.TargetProperty="(FrameworkElement.Opacity)">
                                            <EasingDoubleKeyFrame KeyTime="0:0:0.25" Value="1" />
                                            <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0.5" />
                                            <EasingDoubleKeyFrame KeyTime="0:0:0.75" Value="0.25" />
                                            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0.0" />
                                        </DoubleAnimationUsingKeyFrames>
                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="MyBorder" 
                                       Storyboard.TargetProperty="(FrameworkElement.Opacity)">
                                            <EasingDoubleKeyFrame KeyTime="0:0:0.25" Value="0" />
                                            <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0.25" />
                                            <EasingDoubleKeyFrame KeyTime="0:0:0.75" Value="0.5" />
                                            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="1.0" />
                                        </DoubleAnimationUsingKeyFrames>
    
    
    

    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="RectangleVisibleOnCklick" 
                                       Storyboard.TargetProperty="(FrameworkElement.Opacity)">
                                            <EasingDoubleKeyFrame KeyTime="0:0:0" Value="1" />
                                            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0.0" />
                                        </DoubleAnimationUsingKeyFrames>
                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="MyBorder" 
                                       Storyboard.TargetProperty="(FrameworkElement.Opacity)">
                                            <EasingDoubleKeyFrame KeyTime="0:0:0" Value="0" />
                                            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="1.0" />
                                        </DoubleAnimationUsingKeyFrames>
    
    
    
    带有椭圆内容的椭圆按钮

            <ImageBrush x:Key="KoalaImageBrushKey" ImageSource="Images/Koala.jpg"/>
        <ImageBrush x:Key="PinguinsImageBrushKey" ImageSource="Images/Penguins.jpg"/>
        <Style x:Key="RoundButtonTemplate" TargetType="Button">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Grid>
                            <Ellipse x:Name="MyBorder" Fill="{TemplateBinding Background}"></Ellipse>
                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center">
                                <ContentPresenter.OpacityMask>
                                    <VisualBrush Visual="{Binding ElementName=MyBorder}"></VisualBrush>
                                </ContentPresenter.OpacityMask>
                            </ContentPresenter>
                            <Ellipse x:Name="RectangleVisibleOnCklick" Fill="{StaticResource PinguinsImageBrushKey}" Opacity="0"></Ellipse>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <EventTrigger RoutedEvent="Button.Click">
                                <BeginStoryboard>
                                    <Storyboard>
                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="RectangleVisibleOnCklick" 
                                       Storyboard.TargetProperty="(FrameworkElement.Opacity)">
                                            <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="1" />
                                            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0.5" />
                                            <EasingDoubleKeyFrame KeyTime="0:0:1.5" Value="0.25" />
                                            <EasingDoubleKeyFrame KeyTime="0:0:2" Value="0.0" />
                                        </DoubleAnimationUsingKeyFrames>
                                    </Storyboard>
                                </BeginStoryboard>
                            </EventTrigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Setter Property="Width" Value="50"/>
            <Setter Property="Foreground" Value="White"/>
            <Setter Property="Height" Value="50"></Setter>
            <Setter Property="Background" Value="{StaticResource KoalaImageBrushKey}"/>
        </Style>
    
    
    
    带有椭圆形内容的矩形按钮(由于使用关键帧动画,单击时为椭圆形)

    
    
    问候。

    这是一个解决方案
    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="RectangleVisibleOnCklick" 
                                       Storyboard.TargetProperty="(FrameworkElement.Opacity)">
                                            <EasingDoubleKeyFrame KeyTime="0:0:0" Value="1" />
                                            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0.0" />
                                        </DoubleAnimationUsingKeyFrames>
                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="MyBorder" 
                                       Storyboard.TargetProperty="(FrameworkElement.Opacity)">
                                            <EasingDoubleKeyFrame KeyTime="0:0:0" Value="0" />
                                            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="1.0" />
                                        </DoubleAnimationUsingKeyFrames>
    
            <ImageBrush x:Key="KoalaImageBrushKey" ImageSource="Images/Koala.jpg"/>
        <ImageBrush x:Key="PinguinsImageBrushKey" ImageSource="Images/Penguins.jpg"/>
        <Style x:Key="RoundButtonTemplate" TargetType="Button">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Grid>
                            <Ellipse x:Name="MyBorder" Fill="{TemplateBinding Background}"></Ellipse>
                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center">
                                <ContentPresenter.OpacityMask>
                                    <VisualBrush Visual="{Binding ElementName=MyBorder}"></VisualBrush>
                                </ContentPresenter.OpacityMask>
                            </ContentPresenter>
                            <Ellipse x:Name="RectangleVisibleOnCklick" Fill="{StaticResource PinguinsImageBrushKey}" Opacity="0"></Ellipse>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <EventTrigger RoutedEvent="Button.Click">
                                <BeginStoryboard>
                                    <Storyboard>
                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="RectangleVisibleOnCklick" 
                                       Storyboard.TargetProperty="(FrameworkElement.Opacity)">
                                            <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="1" />
                                            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0.5" />
                                            <EasingDoubleKeyFrame KeyTime="0:0:1.5" Value="0.25" />
                                            <EasingDoubleKeyFrame KeyTime="0:0:2" Value="0.0" />
                                        </DoubleAnimationUsingKeyFrames>
                                    </Storyboard>
                                </BeginStoryboard>
                            </EventTrigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Setter Property="Width" Value="50"/>
            <Setter Property="Foreground" Value="White"/>
            <Setter Property="Height" Value="50"></Setter>
            <Setter Property="Background" Value="{StaticResource KoalaImageBrushKey}"/>
        </Style>
    
            <ImageBrush x:Key="KoalaImageBrushKey" ImageSource="Images/Koala.jpg"/>
        <ImageBrush x:Key="PinguinsImageBrushKey" ImageSource="Images/Penguins.jpg"/>
        <Style x:Key="RoundButtonTemplate" TargetType="Button">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Grid>
                            <Rectangle x:Name="MyBorder" Fill="{TemplateBinding Background}"></Rectangle>
                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center">
                                <ContentPresenter.OpacityMask>
                                    <VisualBrush Visual="{Binding ElementName=MyBorder}"></VisualBrush>
                                </ContentPresenter.OpacityMask>
                            </ContentPresenter>
                            <Ellipse x:Name="RectangleVisibleOnCklick" Fill="{StaticResource PinguinsImageBrushKey}" Opacity="0"></Ellipse>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <EventTrigger RoutedEvent="Button.Click">
                                <BeginStoryboard>
                                    <Storyboard>
                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="RectangleVisibleOnCklick" 
                                       Storyboard.TargetProperty="(FrameworkElement.Opacity)">
                                            <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="1" />
                                            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0.5" />
                                            <EasingDoubleKeyFrame KeyTime="0:0:1.5" Value="0.25" />
                                            <EasingDoubleKeyFrame KeyTime="0:0:2" Value="0.0" />
                                        </DoubleAnimationUsingKeyFrames>
                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="MyBorder" 
                                       Storyboard.TargetProperty="(FrameworkElement.Opacity)">
                                            <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0" />
                                            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0.25" />
                                            <EasingDoubleKeyFrame KeyTime="0:0:1.5" Value="0.5" />
                                            <EasingDoubleKeyFrame KeyTime="0:0:2" Value="1.0" />
                                        </DoubleAnimationUsingKeyFrames>
                                    </Storyboard>
                                </BeginStoryboard>
                            </EventTrigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Setter Property="Width" Value="50"/>
            <Setter Property="Foreground" Value="White"/>
            <Setter Property="Height" Value="50"></Setter>
            <Setter Property="Background" Value="{StaticResource KoalaImageBrushKey}"/>
        </Style>