WPFアニメーションライブラリ:XamlFlair

WPFアニメーションライブラリ:XamlFlair

XamlFlairライブラリの目標は、一般的なアニメーションの実装を簡素化し、開発者が数行のXaml`で単一または組み合わせたアニメーションセットを簡単に追加できるようにすることです。

最后更新 2023/07/03 13:33
沙漠尽头的狼
预计阅读 7 分钟
分类
WPF
专题
WPFのオープンソースプロジェクト WPF UIデザイン
标签
.NET WPF WPFのオープンソースプロジェクト オープンソースソース アニメーションギャラリー Animation Library

原文へのリンク:https//github.com/XamlFlair/XamlFlair

砂漠の果ての狼

XamlFlair

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

案例程序

展示会です。

Sekuence 益智游戏| :-------------------------------------------: Sekuence |

著者のサポート

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

内容は

NuGetからインストールする

プラットフォームプラットフォーム Package NuGet
UWP XamlFlair.UWP
WPF XamlFlair.WPF
Uno XamlFlair.Uno

次のコマンドを使用して、Package Manager Console から XamlFlair をダウンロードします

UWP:

Install-Package XamlFlair.UWP

アプリケーションは、Windows 10バージョン18 0 9(ビルド177 6 3)以上でなければなりません。

WPF:

Install-Package XamlFlair.WPF

Uno:

Install-Package XamlFlair.Uno

UWPアプリはWindows 10バージョン18 0 9(ビルド183 6 2)以上で動作する必要があります。

機能の概要

Feature UWP WPF UWP (Uno) iOS (Uno) Android (Uno) **Wasm Unoの试験的 **
アニメーションシステム コンボイ ストーリーボードの作成 ストーリーボードの作成 ストーリーボードの作成 ストーリーボードの作成 ストーリーボードの作成
【変換型】 N/A グループの変換 複合変換 複合変換 複合変換 複合変換
DefaultAnimations.xaml - - - - -
TransformOn - - - - -
合成アニメーションCompound Animations
相対トランスフォームRelative Translations
アニメーションのループRepeating Animations
イベント&バインドEvents & Bindings
プライマリ/セカンダリ完了コマンド
StartWith
AllowOpacityReset - - - - -
ClipToBounds N/A
アニメートされたリストAnimated Lists
ブラーエフェクトBlur Effect - - - -
彩度エフェクトSaturation Effect - - - - -
トーンエフェクトTint Effect - - - - -
カラーアニメーションColor Animations -
パース回転ターンテーブルPerspective Rotations Swivel - - - - -
アニメーションのデバッグDebugging Animations -

基本概念

XamlFlairの基本コンセプトは、FromとToのアニメーションに基づいています。Fromアニメーションで構成されるUI要素は、** 1つ以上の任意の値で始まり、対応するプロパティのデフォルト値で ** を完了します。Toアニメーションで構成されるUI要素は、現在の状態で ** を開始し、1つまたは複数の任意の値 ** に設定します。

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)一节了解更多详细信息。

下面列出了使用 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中,复制粘贴以下相应链接中的内容

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

既定のアニメーション_WPF_Only

除了创建包含自定义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。以下是关于两个选项的示例:

TransformOn动画

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

原文readme.md长すぎる,翻译疲れ,大家有兴味看原文吧,最后上一图:

Keep Exploring

延伸阅读

更多文章
同分类 / 同标签 2025/09/13

WPFからAvaloniaへの移行シリーズ:WPFプログラムをAvaloniaに移行する必要がある理由

ここ数年、当社のホストソフトウェアは主にWPFとWin Formで開発されてきました。これらのテクノロジーはWindowsプラットフォームで非常にうまく機能し、小規模なパイロット生産から今日の大規模なデリバリまでの段階を経てきました。しかし、ビジネスの成長と顧客のニーズの変化に伴い、単一のWindowsテクノロジースタックは私たちが乗り越えなければならないハードルになりました。

继续阅读
同分类 / 同标签 2025/01/26

WPFはカスタムXMLファイルで国際化を実現

この記事では、必要なNuGetパッケージのインストール、言語リストの動的取得、言語の動的切り替え、コードとxamlインターフェイスでの翻訳文字列の使用、開発者がWPFアプリケーションを簡単に国際化できるようにするソースコードへのリンクなど、WPFプログラムでカスタムXMLファイルを使用した国際化の方法について詳しく説明します。

继续阅读