【荐】牛逼的WPF动画库:XamlFlair

【荐】牛逼的WPF动画库:XamlFlair

原文链接:https://github.com/XamlFlair/XamlFlair

翻译:沙漠尽头的狼(本文未全文翻译,建议阅读原文了解更多)

XamlFlair

XamlFlair库的目标是简化常见动画的实现,并允许开发人员使用几行Xaml轻松地添加单个或组合的动画集。

展示

Sekuence Puzzle Game[1]

支持作者

如果你想用一些咖啡来支持我的工作,你可以在这里做:给我买杯咖啡[2]。你的帮助让我有动力继续花时间在这个项目上,并继续维护和更新它的新功能。提前谢谢!

内容

  • Install from Nuget[3]

  • Features Overview[4]

  • Basic Concepts[5]

  • Usage[6]

  • Base Animation Types[7]

  • Color Animations (*WPF And Uno Only*)[8]

  • Overriding the Global Default Values[9]

  • Using a `ResourceDictionary` for Base Settings[10]

  • Default Animations (*WPF Only*)[11]

  • `TransformOn` Property (*WPF Only*)[12]

  • Perspective Rotations (*UWP Only*)[13]

  • Combining Animations[14]

  • Overriding Values[15]

  • Relative Translations on X and Y Axes[16]

  • Compound Animations[17]

  • Repeating Animations[18]

  • Events and Bindings[19]

  • Primary and Secondary Completion Commands[20]

  • Using the `StartWith` Property[21]

  • Using the `AllowOpacityReset` Property (*WPF Only*)[22]

  • Using the `ClipToBounds` Property (*UWP And Uno Only*)[23]

  • Debugging Animations[24]

  • Logging Animations[25]

  • `ListViewBase` (_UWP and Uno_) and `ListBox`-based (_WPF_) Animations[26]

Nuget中下载

PlatformPackageNuGet
UWP[XamlFlair.UWP][UWPNuGet][![UWPNuGetShield]][UWPNuGet]
WPF[XamlFlair.WPF][WPFNuGet][![WPFNuGetShield]][WPFNuGet]
Uno[XamlFlair.Uno][UNONuGet][![UNONuGetShield]][UNONuGet]

使用以下命令从Package Manager Console下载XamlFlair:

UWP:

Install-Package XamlFlair.UWP

您的应用程序必须至少针对Windows 10版本1809(内部版本17763)

WPF:

Install-Package XamlFlair.WPF

Uno:

Install-Package XamlFlair.Uno

您的UWP应用程序必须至少针对Windows 10版本1809(构建18362)

功能概述(Features Overview)

FeatureUWPWPFUWP (Uno)iOS (Uno)Android (Uno)Wasm (Uno) EXPERIMENTAL
Animation SystemCompositionStoryboardsStoryboardsStoryboardsStoryboardsStoryboards
Transform TypeN/ATransformGroupCompositeTransformCompositeTransformCompositeTransformCompositeTransform
DefaultAnimations.xaml-----
TransformOn-----
Compound Animations
Relative Translations
Repeating Animations
Events & Bindings
Primary/Secondary Completion Commands
StartWith
AllowOpacityReset-----
ClipToBoundsN/A
Animated Lists
Blur Effect----
Saturation Effect-----
Tint Effect-----
Color Animations-
Perspective Rotations (Swivel)-----
Debugging Animations-

基本概念(Basic Concepts)

XamlFlair的基本概念是基于From和To的动画。由From动画组成的任何UI元素都将以一个或多个任意值开始,并使用相应属性的默认值完成。由To动画组成的任何UI元素都将以其当前状态开始,并设置为一个或多个任意值

From动画的示例(一个移动到Translation(0)的UI元素):

From动画

To动画示例(从当前状态滑出的UI元素):

To动画

注意:需要注意的是,对于彩色动画,此规则有一个例外,这在“基本动画类型”部分中进行了说明。

使用

首先,需要添加以下Xaml命名空间引用:

UWP and Uno:

xmlns:xf="using:XamlFlair"

WPF:

xmlns:xf="clr-namespace:XamlFlair;assembly=XamlFlair.WPF"

给任何需要动画的UI元素FrameworkElement添加附加属性:

<Border xf:Animations.Primary="{StaticResource FadeIn}" />

注意:如果FrameworkElement在Xaml中定义了CompositeTransform,则它将在动画过程中更改。

注意StaticResource的用法是引用全局通用动画,这将在下一节中讨论。

基本动画类型(Base Animation Types)

淡入淡出(Fade)

淡入淡出动画

警告:设置FadeTo动画时要小心,因为如果VisibilityVisible,元素将保留在可视树中。在某些情况下,您可能需要手动管理IsHitTestVisible,以允许用户点击元素。

移动(Translate)

移动动画

缩放(Scale)

缩放动画

旋转(Rotate)

旋转动画

模糊 (Blur,只支持UWP 和 WPF)

模糊动画

饱和度 (Saturate,只支持UWP)

饱和度动画

色调(Tint)(只支持UWP)

色调动画

色彩 (Color,只支持WPF和Uno)

色彩动画

注意:重要的是要注意,当使用From动画设置色彩动画时,颜色将从指定值设置为其当前状态,而不是默认值。

旋轴 (Swivel,只支持UWP)

旋轴动画

注意:请阅读Perspective Rotations (*UWP Only*)[27]一节了解更多详细信息。

下面列出了使用XamlFlair时一些值得注意的默认值

  • Kind: FadeTo

  • Duration (milliseconds): 500

  • Easing: Cubic

  • Easing Mode: EaseOut

  • TransformCenterPoint: (0.5, 0.5)

  • Event: Loaded

  • InterElementDelay (milliseconds): 25 (List controls only)

  • TransformOn: Render (WPF only)

  • Saturation: 0.5 (UWP only)

  • Tint: Transparent (UWP only)

色彩动画 (Color Animations,只支持WPF和Uno)

使用色彩动画时需要注意,因为它们与其他基本类型动画略有不同。使用ColorToColorFrom时,必须执行以下操作:

  • 只能设置以下属性的动画:Control.Background, Control.Foreground, Control.BorderBrush, Border.Background, Border.BorderBrush, TextBlock.Foreground, Shape.Fill, Shape.Stroke

  • 确保在要设置动画的相应属性上设置brush

  • 还必须使用ColorOn指定目标属性

以下示例将为Rectangle的Fill属性设置从RoyalBlue到DarkGreen的动画:

<xf:AnimationSettings x:Key="SampleColorAnimation"Kind="ColorTo"Color="DarkGreen"ColorOn="Fill" /><Rectangle Fill="RoyalBlue"xf:Animations.Primary="{StaticResource SampleColorAnimation}" />

覆盖全局默认值

如果需要全局更改默认动画值之一(例如,默认Duration为750而不是500),则可以在应用程序的初始化代码中调用OverrideDefaultSettings函数。以下示例更改DurationEasing的默认值:

XamlFlair.Animations.OverrideDefaultSettings(duration: 750,easing: EasingType.Quadratic);

因此,在上面的示例代码中,每个动画都将以二次缓和的方式运行750ms。

使用ResourceDictionary进行基本设置

所有常见动画都应该放在全局ResourceDictionary(例如:Animations.xaml)中,并在应用程序中需要时使用。目标是将所有动画合并为一个具有有意义名称的文件,以便任何开发人员都能准确地了解将动画应用到FrameworkElement中的内容。下面是一个小例子:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:xf="using:XamlFlair"><x:Double x:Key="PositiveOffset">50</x:Double><x:Double x:Key="NegativeOffset">-50</x:Double><x:Double x:Key="SmallScaleFactor">0.75</x:Double><x:Double x:Key="LargeScaleFactor">1.25</x:Double><xf:AnimationSettings x:Key="FadeIn"Kind="FadeFrom"Opacity="0" /><xf:AnimationSettings x:Key="FadeOut"Kind="FadeTo"Opacity="0" /><!-- Scale to a larger value --><xf:AnimationSettings x:Key="Expand"Kind="ScaleXTo,ScaleYTo"ScaleX="{StaticResource LargeScaleFactor}"ScaleY="{StaticResource LargeScaleFactor}" /><!-- Scale from a larger value --><xf:AnimationSettings x:Key="Contract"Kind="ScaleXFrom,ScaleYFrom"ScaleX="{StaticResource LargeScaleFactor}"ScaleY="{StaticResource LargeScaleFactor}" />...</ResourceDictionary>

要设置应用程序中已有的这组预配置AnimationSettings,请执行以下步骤:

  1. 项目工程点击右键菜单,点击Add > New Item...

  2. 选择 Resource Dictionary 并命名为 Animations.xaml

  3. App.xaml内容如下:

    <Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary Source="Animations.xaml" /></ResourceDictionary.MergedDictionaries></ResourceDictionary></Application.Resources>
  1. Animations.xaml中,复制粘贴以下相应链接中的内容

  • Animation settings for UWP[28]

  • Animation settings for WPF[29]

  • Animation settings for Uno[30]

你的应用程序现在有一组通用动画可以使用了。

默认动画 (只支持WPF)

除了创建包含自定义AnimationSettingsResourceDictionary之外,XamlFlair还提供一些默认动画。

要在应用程序中引用这些默认动画,请在App.xaml中执行以下步骤:

  1. 顶部添加XamlFlair.WPF命名空间

    xmlns:xf="clr-namespace:XamlFlair;assembly=XamlFlair.WPF"
  1. 更新应用程序资源(Application Resources):

    <Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><xf:XamlFlairResources /></ResourceDictionary.MergedDictionaries></ResourceDictionary></Application.Resources>

您的应用程序现在有一系列全局默认的动画可以使用了。

如果Visual Studio Intellisense在使用<xf:XamlFlairResources />时不起作用,您可能需要尝试以下操作:

    <Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary Source="pack://application:,,,/XamlFlair.WPF;component/DefaultAnimations.xaml"/></ResourceDictionary.MergedDictionaries></ResourceDictionary></Application.Resources>

TransformOn 属性 (只支持WPF)

RenderTransform可使用TransformOn属性应用动画。可用选项为RenderLayout。未指定任何内容时,默认为Render。以下是关于两个选项的示例:

注意:非常重要的是要注意WPF的LayoutTransform不支持任何TranslateTransform,因此translate动画永远不会生效。您可以在这里[31]的备注部分了解更多信息。

原文readme.md太长了,翻译累了,大家有兴趣看原文吧,最后上一图:

参考资料

[1]

Sekuence Puzzle Game: https://sekuence.fun

[2]

给我买杯咖啡: https://www.buymeacoffee.com/xamlflair

[3]

Install from Nuget: #install-from-nuget

[4]

Features Overview: #features-overview

[5]

Basic Concepts: #basic-concepts

[6]

Usage: #usage

[7]

Base Animation Types: #base-animation-types

[8]

Color Animations (WPF And Uno Only): #color-animations-wpf-and-uno-only

[9]

Overriding the Global Default Values: #overriding-the-global-default-values

[10]

Using a ResourceDictionary for Base Settings: #using-a-resourcedictionary-for-base-settings

[11]

Default Animations (WPF Only): #default-animations-wpf-only

[12]

TransformOn Property (WPF Only): #transformon-property-wpf-only

[13]

Perspective Rotations (UWP Only): #perspective-rotations-uwp-only

[14]

Combining Animations: #combining-animations

[15]

Overriding Values: #overriding-values

[16]

Relative Translations on X and Y Axes: #relative-translations-on-x-and-y-axes

[17]

Compound Animations: #compound-animations

[18]

Repeating Animations: #repeating-animations

[19]

Events and Bindings: #events-and-bindings

[20]

Primary and Secondary Completion Commands: #primary-and-secondary-completion-commands

[21]

Using the StartWith Property: #using-the-startwith-property

[22]

Using the AllowOpacityReset Property (WPF Only): #using-the-allowopacityreset-property-wpf-only

[23]

Using the ClipToBounds Property (UWP And Uno Only): #using-the-cliptobounds-property-uwp-and-uno-only

[24]

Debugging Animations: #debugging-animations

[25]

Logging Animations: #logging-animations

[26]

ListViewBase (UWP and Uno) and ListBox-based (WPF) Animations: #listviewbase-uwp-and-uno-and-listbox-based-wpf-animations

[27]

Perspective Rotations (UWP Only): #perspective-rotations-uwp-only

[28]

Animation settings for UWP: https://github.com/XamlFlair/XamlFlair/blob/master/Samples/XamlFlair.Samples.UWP/Animations.xaml

[29]

Animation settings for WPF: https://github.com/XamlFlair/XamlFlair/blob/master/Samples/XamlFlair.Samples.WPF/Animations.xaml

[30]

Animation settings for Uno: https://github.com/XamlFlair/XamlFlair/blob/master/Samples/Uno/XamlFlair.Samples.Uno.Shared/Animations.xaml

[31]

这里: https://docs.microsoft.com/en-us/dotnet/api/system.windows.frameworkelement.layouttransform?redirectedfrom=MSDN&view=net-5.0#remarks

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301166.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java字符串如何输出_java字符串如何输出

在Java编程中&#xff0c;我们常常用 System.out.println(); 来输出字符串。System.out.println();System是一个类&#xff0c;继承自根类Objectout是类PrintStream类实例化的一个对象&#xff0c;且是System类的静态成员变量println()是类PrintStream的成员方法&#xff0c;被…

简单易懂的自动驾驶科普知识

全世界只有3.14 % 的人关注了数据与算法之美有不少人问我人工智能和自动驾驶的技术问题&#xff0c;我作为一个主业是后端开发的老码农可是回答不了啊&#xff01;今天转载一篇自动驾驶大拿写的文章&#xff0c;学习一下。先来一张各大车企自动驾驶技术的分级图&#xff0c;大致…

WPF TextBox限制只能输入数字的两种方法

文本框中只能输入数字&#xff0c;一个常见的功能喽&#xff0c;今天就来看看如何实现它~下面就看看代码思路都写在xaml里面了&#xff0c;MainWindow.xaml:<Window x:Class"wpfcore.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/present…

国家特级数学教授李毓佩:我们欠孩子真正的数学阅读 !

▲数据汪特别推荐点击上图进入玩酷屋说到数学&#xff0c;我想起了13年一场轰动行业各界的“数学无用论”&#xff01;那时微博上有个话题叫做#让数学滚出高考#&#xff0c;超过7成网友都表示支持&#xff0c;这可怕的比例就能说明在中国由于数学差导致命运被洗牌的真不在少数……

程序员都想,却不敢做的事?我来!

一个 “实用” 的好命令&#xff0c;我不得试试&#xff1f;大家好&#xff0c;我是鱼皮。在编程届&#xff0c;有一个家喻户晓的实用 Linux 命令&#xff1a;rm -rf / 。据说&#xff0c;此命令一旦执行成功&#xff0c;就会给人带来快乐&#xff0c;是一个善良的好命令&#…

也来谈谈这致命的手机充电器

这两天有很多关于因使用iPhone在充电时打电话被电死的讨论&#xff0c;因此这里也来谈谈几点。 手机充电器的工作原理 刚好前段时间拆了两个充电器&#xff0c;看下里面的电路就明白了。鉴于网络上不明真相出来误导人的特别多&#xff0c;很多网站竟然还有文章说手机充电器里没…

每日一笑 | 一些关于学编程的领悟

全世界只有3.14 % 的人关注了数据与算法之美&#xff08;图源网络&#xff0c;侵权删&#xff09;

java基础变量_Java基础语法之变量和常量

上行没有"{"时&#xff0c;下行代码与上行首字母对齐标识符概述在Java中对变量、常量、函数和语句块都是有名字的&#xff0c;他们的名字统称为Java标识符。是为类、对象、方法、变量、接口和自定义数据类型命名的。组成标识符是由数字、字母、下划线(_)和美元符($)或…

GARFIELD@01-07-2005

completist 转载于:https://www.cnblogs.com/rexhost/archive/2005/01/07/88107.html

非常不错 Hadoop 的HDFS (Hadoop集群(第8期)_HDFS初探之旅)

1、HDFS简介 HDFS&#xff08;Hadoop Distributed File System&#xff09;是Hadoop项目的核心子项目&#xff0c;是分布式计算中数据存储管理的基础&#xff0c;是基于流数据模式访问和处理超大文件的需求而开发的&#xff0c;可以运行于廉价的商用服务器上。它所具有的高容错…

.net core 浅克隆和深克隆/浅拷贝和深拷贝

除非语言里只有基础类型&#xff0c;没有引用类型&#xff0c;否则用任何一种编程语言克隆对象都是很棘手的事情。1、前言"老沉&#xff0c;什么是深克隆&#xff0c;什么是浅克隆?"“哈&#xff0c;迷茫了&#xff1f;这深深浅浅的体验是不是把你搞晕了&#xff1f…

中国三代核电最新进展;AI助力发现系外行星;腾讯发现特斯拉系统漏洞;论文剽窃被撤销学位;金立破产债权达173亿;这就是今日大新闻...

今天是4月3日农历二月廿八今天星期三最近上班老是有人来推销办理信用卡是谁把我缺钱花的消息透露出去了下面是今天的大新闻中国发布三代核电最新进展&#xff08;环球时报&#xff09;由中国核能行业协会主办的中国核能可持续发展论坛1日在京举行&#xff0c;多位专家现场发布了…

java对象模型是什么_蓝石榴_个人博客_JVM内存结构、Java内存模型、Java对象模型...

JVM内存结构我们都知道&#xff0c;Java代码是要运行在虚拟机上的&#xff0c;而虚拟机在执行Java程序的过程中会把所管理的内存划分为若干个不同的数据区域&#xff0c;这些区域都有各自的用途。其中有些区域随着虚拟机进程的启动而存在&#xff0c;而有些区域则依赖用户线程的…

使用微信云托管快速部署一个.Net Core项目(一)

前几天微信将小程序开发者工具内的云托管升级为微信云托管&#xff0c;新增了很多诸如OpenApi、MySql数据库、流水线构建、web控制台等能力。看文档还是蛮激动的&#xff0c;对开发者来说确实是个好消息&#xff0c;因为之前的一些业务逻辑大都写在云函数或者部署在服务器里面&…

中国禁止洋垃圾后,韩国这座垃圾山已经烧了3个月,全部烧完还要5年!

全世界只有3.14 % 的人关注了数据与算法之美2017年5月&#xff0c;韩国洛东江畔的樱花&#xff08;图片来源&#xff1a;东方IC&#xff09;去年平昌冬奥会&#xff0c;由5名来自义城郡的姑娘组成的韩国冰壶队战胜各路强手&#xff0c;夺得亚军&#xff0c;这让义城郡这座风景秀…

zendframework配置篇

1. 重写配置 httpd.conf配置修改 LoadModule rewrite_module modules/mod_rewrite.so <Directory "D:\PHPProject\MVCA\public"> AllowOverride All </Directory> 2.application.config.php中添加模块&#xff0c;如 Album,紧跟Application后面

ADO.NET 2.0 中的新增 DataSet 功能

发布日期&#xff1a; 1/13/2005| 更新日期&#xff1a; 1/13/2005 Jackie Goldstein Renaissance Computer Systems 适用于&#xff1a; Microsoft ADO.NET 2.0 Visual Basic 编程语言 摘要&#xff1a;了解有关 .NET Framework DataSet 类以及与它密切相关的类中的新增 ADO…

为WPF播放GIF伤神不?

为WPF播放GIF伤神不&#xff1f;WpfAnimatedGif仓库地址&#xff1a;https://github.com/XamlAnimatedGif/WpfAnimatedGifNuget 包&#xff1a;WpfAnimatedGif[1]。今天介绍一个用于在 WPF 中显示动态 GIF 图片的库&#xff0c;可在 XAML 或代码中使用&#xff1a;WpfAnimatedG…

每日一笑 | 最真实的商业模式

全世界只有3.14 % 的人关注了数据与算法之美&#xff08;图源网络&#xff0c;侵权删&#xff09;

java执行更新sql_sql server执行更新需要更多时间

我有两个表(UserTable和UserProfile)和结构&#xff1a;create table userTable(id_user int identity(1,1) primary key ,Name varchar(300) not null ,Email varchar(500) not null ,PasswordUser varchar(700) not null,userType int ,constraint usertype_fk foreign key(u…