相关文章推荐
玩篮球的松鼠  ·  sklearn GridSearchCV ...·  2 年前    · 
一身肌肉的打火机  ·  windows ...·  2 年前    · 

WPF实现渐变淡入淡出的动画效果

1、实现原理

1.1 利用UIElement.OpacityMask属性,用于改变对象区域的不透明度的画笔。可以使元素的特定区域透明或部分透明,从而实现比较新颖的效果。

1.2 OpacityMask属性接受任何画刷,可利用LinearGradientBrush线性渐变画刷,通过对渐变画刷中各颜色点加以动画处理即可。

2、渐变淡入实现

渐变淡入效果,可通过事件触发器触发Loaded事件实现,所以可以仅用前端XAML语言实现。

2.1 设置对象的OpacityMask属性

<Grid.OpacityMask>
    <LinearGradientBrush StartPoint="0.5,1" EndPoint="0.5,0">
        <GradientStop Color="#00000000" Offset="0"/>
        <GradientStop Color="#00000000" Offset="1"/>
        <GradientStop Color="#00000000" Offset="1"/>
    </LinearGradientBrush>
</Grid.OpacityMask>

2.2 设置对象的事件触发器

<Grid.Triggers>
    <EventTrigger RoutedEvent="Loaded">
        <EventTrigger.Actions>
            <BeginStoryboard>
                <Storyboard>
                    <DoubleAnimation From="1" To="0" Duration="0:0:1.5" Storyboard.TargetProperty="OpacityMask.(GradientBrush.GradientStops)[1].Offset"/>
                    <DoubleAnimation From="1" To="0" Duration="0:0:1" BeginTime="0:0:0.5" Storyboard.TargetProperty="OpacityMask.(GradientBrush.GradientStops)[2].Offset"/>
                    <ColorAnimation To="#FF000000" Duration="0" Storyboard.TargetProperty="OpacityMask.(GradientBrush.GradientStops)[2].Color"/>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger.Actions>
    </EventTrigger>
</Grid.Triggers>

3、渐变淡出实现

渐变淡出效果,由于事件触发器事件需要路由事件触发,所以需要使用后端代码实现。

3.1 准备渐变淡出的动画和画刷资源

<Window.Resources>
    <Storyboard x:Key="ClosedStoryboard" Storyboard.TargetName="LoginGrid">
        <DoubleAnimation From="1" To="0" Duration="0:0:2" Storyboard.TargetProperty="OpacityMask.(GradientBrush.GradientStops)[1].Offset"/>
        <DoubleAnimation From="1" To="0" Duration="0:0:1.5" BeginTime="0:0:0.5"Storyboard.TargetProperty="OpacityMask.(GradientBrush.GradientStops)[2].Offset"/>
        <ColorAnimation To="#00000000" Duration="0" Storyboard.TargetProperty="OpacityMask.(GradientBrush.GradientStops)[2].Color"/>
    </Storyboard>
    <LinearGradientBrush x:Key="ClosedBrush" StartPoint="0.5,0" EndPoint="0.5,1">
        <GradientStop Color="#FF000000" Offset="0"/>
        <GradientStop Color="#FF000000" Offset="1"/>
        <GradientStop Color="#FF000000" Offset="1"/>
    </LinearGradientBrush>
</Window.Resources>

3.2 后端通过绑定按钮的Click事件实现

private void btnCancel_Click(object sender, RoutedEventArgs e)
    this.IsEnabled = false;
    LoginGrid.OpacityMask = this.Resources["ClosedBrush"] as LinearGradientBrush;
    Storyboard std = this.Resources["ClosedStoryboard"] as Storyboard;
    std.Completed += delegate { this.Close(); };
    std.Begin();

4、运行效果

4.1 效果图如下

欢迎转载,但请注明出处:http://www.cnblogs.com/julyweb/,谢谢!

WPF实现渐变淡入淡出的动画效果1、实现原理1.1 利用UIElement.OpacityMask属性,用于改变对象区域的不透明度的画笔。可以使元素的特定区域透明或部分透明,从而实现比较新颖的效果。1.2 OpacityMask属性接受任何画刷,可利用LinearGradientBrush线性渐变画刷,通过对渐变画刷中各颜色点加以动画处理即可。2、渐变淡入实现渐变淡入效果,可通过事件触发器触发Loaded事件实现,所以可以仅用前端XAML语言实现。2.1 设置对象的OpacityMa 1.1WPF中的坐标 1.1.1 WPF的默认坐标:WPF中平面坐标系主要包括原点位置、X和Y轴方向,以及坐标单位。WPF的默认坐标系原点位置在绘制区域的左上角,X轴向右增加,Y轴向下增加。 自定义坐标系:自定义坐标系主要通过Transform类来实现,一般可以使用ScaleTransform和Translat... &lt;Window x:Class="WpfApplication1.DialogWin" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft... 1.show([speed,[easing],[fn]]) 显示隐藏的匹配元素。 这个就是 ‘show( speed, [callback] )’ 无动画的版本。如果选择的元素是可见的,这个方法将不会改变任何东西。无论这个元素是通过hide()方法隐藏的还是在CSS里设置了;,这个方法都将有效。 2.hide([speed,[easing],[fn]]) <style> #volet_clos {position: fixed;top: 60%; left: 0;width: 100%;} #volet {padding: 10px;background: #6B9A49; color: #fff;width: 100%;height:350px;} /* 初始定位 */ #volet {position: absolute;left: 0px;top: 375px;transition: all
这个效果运用OpacityMask属性,用于改变对象区域的不透明度的画笔。可以使元素的特定区域透明或部分透明,从而实现比较新颖的效果。 通过事件触发器触发Loaded事件实现,所以可以仅用前端XAML语言实现渐变淡出的动画和画刷资源 <Window.Resources> <!--淡出淡入动画--> <Sto...
所周知,WPF即Windows Presentation Foundation(下一代显示系统),可以利用它来创建能带给用户震撼视觉体验的Windows客户端应用程序。既然是显示系统,必然涉及到界面的美化。笔者就自身的学习经验,总结了一下关于WPF中背景图片和透明度的设置方法,欢迎大家拍砖,别拍到脸就行 ^-^! WPF程序加背景图片,笔者总结了一下,有一下几个方法。(个人认为方法一、二比较简单
在手机上去实现一些动画效果算是件比较炫酷的事情,因此Android系统在一开始的时候就给我们提供了两种实现动画效果的方式,逐帧动画(frame-by-frame animation)和补间动画(tweened animation)。逐帧动画的工作原理很简单,其实就是将一个完整的动画拆分成一张张单独的图片,然后再将它们连贯起来进行播放,类似于动画片的工作原理。补间动画则是可以对View进行一系列的动画操作,包括淡入淡出、缩放、平移、旋转四种。 然而自Android 3.0版本开始,系统给我们提供了一种全新的动
UIElement 有OpacityMask 属性,它表示当前元素的不透明蒙版。该属性的值是Brush 类型,当给属性赋值后,该属性仅使用Alpha 通道值,其他通道(RGB)通道将会被忽略。 下面的例子使用LinearGradientBrush 渐变色作为图像的不透明蒙版。 原图不设置不透明蒙版显示如下: 设置渐变画刷为不透明蒙版:
WPF实现媒体卡片效果,可以使用 MediaElement 控件和 VisualBrush 控件。首先,将 MediaElement 控件添加到 XAML 中,并设置 Source 属性为要播放的媒体文件。然后,创建一个 VisualBrush 控件,并将其 Viewbox 和 ViewboxUnits 属性设置为 "0,0,1,1" 和 "Absolute",这样可以将 MediaElement 控件的内容作为 VisualBrush 的源。最后,将 VisualBrush 控件应用到需要媒体卡片效果的控件上,例如 Border 或 Grid。这样就可以实现媒体卡片效果了。