http://blog.csdn.net/lhx527099095/article/details/8005095

先上张效果图看看 如果不如您的法眼 可以移步了 或者有更好的效果 可以留言给我

废话不多说 直接贴代码 一个usercontrol

[csharp] view
plain
copy

  1. <UserControl x:Class="LoadingMask_Demo.LoadingWait"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  5. IsVisibleChanged="HandleVisibleChanged">
  6. <UserControl.Background>
  7. <SolidColorBrush Color="Black" Opacity="0.2"  />
  8. </UserControl.Background>
  9. <UserControl.Resources>
  10. <SolidColorBrush Color="#FF007BE5" x:Key="CirclesColor" />
  11. <!--<SolidColorBrush Color="Black" x:Key="BackgroundColor" Opacity=".20" />-->
  12. </UserControl.Resources>
  13. <Viewbox Width="100" Height="100"
  14. HorizontalAlignment="Center"
  15. VerticalAlignment="Center">
  16. <Grid x:Name="LayoutRoot"
  17. Background="Transparent"
  18. ToolTip="Please wait...."
  19. HorizontalAlignment="Center"
  20. VerticalAlignment="Center">
  21. <TextBlock Text="Loading..."  HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="14" Foreground="#FFE3953D" FontWeight="Bold" />
  22. <Canvas RenderTransformOrigin="0.5,0.5"
  23. HorizontalAlignment="Center"
  24. VerticalAlignment="Center" Width="120"
  25. Height="120" Loaded="HandleLoaded"
  26. Unloaded="HandleUnloaded"  >
  27. <Ellipse x:Name="C0" Width="20" Height="20"
  28. Canvas.Left="0"
  29. Canvas.Top="0" Stretch="Fill"
  30. Fill="{StaticResource CirclesColor}" Opacity="1.0"/>
  31. <Ellipse x:Name="C1" Width="20" Height="20"
  32. Canvas.Left="0"
  33. Canvas.Top="0" Stretch="Fill"
  34. Fill="{StaticResource CirclesColor}" Opacity="0.9"/>
  35. <Ellipse x:Name="C2" Width="20" Height="20"
  36. Canvas.Left="0"
  37. Canvas.Top="0" Stretch="Fill"
  38. Fill="{StaticResource CirclesColor}" Opacity="0.8"/>
  39. <Ellipse x:Name="C3" Width="20" Height="20"
  40. Canvas.Left="0"
  41. Canvas.Top="0" Stretch="Fill"
  42. Fill="{StaticResource CirclesColor}" Opacity="0.7"/>
  43. <Ellipse x:Name="C4" Width="20" Height="20"
  44. Canvas.Left="0"
  45. Canvas.Top="0" Stretch="Fill"
  46. Fill="{StaticResource CirclesColor}" Opacity="0.6"/>
  47. <Ellipse x:Name="C5" Width="20" Height="20"
  48. Canvas.Left="0"
  49. Canvas.Top="0" Stretch="Fill"
  50. Fill="{StaticResource CirclesColor}" Opacity="0.5"/>
  51. <Ellipse x:Name="C6" Width="20" Height="20"
  52. Canvas.Left="0"
  53. Canvas.Top="0" Stretch="Fill"
  54. Fill="{StaticResource CirclesColor}" Opacity="0.4"/>
  55. <Ellipse x:Name="C7" Width="20" Height="20"
  56. Canvas.Left="0"
  57. Canvas.Top="0" Stretch="Fill"
  58. Fill="{StaticResource CirclesColor}" Opacity="0.3"/>
  59. <Ellipse x:Name="C8" Width="20" Height="20"
  60. Canvas.Left="0"
  61. Canvas.Top="0" Stretch="Fill"
  62. Fill="{StaticResource CirclesColor}" Opacity="0.2"/>
  63. <Canvas.RenderTransform>
  64. <RotateTransform x:Name="SpinnerRotate"
  65. Angle="0" />
  66. </Canvas.RenderTransform>
  67. </Canvas>
  68. </Grid>
  69. </Viewbox>
  70. </UserControl>
  71. 后台代码:
  72. using System;
  73. using System.Collections.Generic;
  74. using System.Linq;
  75. using System.Text;
  76. using System.Windows;
  77. using System.Windows.Controls;
  78. using System.Windows.Data;
  79. using System.Windows.Documents;
  80. using System.Windows.Input;
  81. using System.Windows.Media;
  82. using System.Windows.Media.Imaging;
  83. using System.Windows.Navigation;
  84. using System.Windows.Shapes;
  85. using System.Windows.Threading;
  86. namespace LoadingMask_Demo
  87. {
  88. /// <summary>
  89. /// Interaction logic for LoadingWait.xaml
  90. /// </summary>
  91. public partial class LoadingWait : UserControl
  92. {
  93. #region Data
  94. private readonly DispatcherTimer animationTimer;
  95. #endregion
  96. #region Constructor
  97. public LoadingWait()
  98. {
  99. InitializeComponent();
  100. animationTimer = new DispatcherTimer(
  101. DispatcherPriority.ContextIdle, Dispatcher);
  102. animationTimer.Interval = new TimeSpan(0, 0, 0, 0, 90);
  103. }
  104. #endregion
  105. #region Private Methods
  106. private void Start()
  107. {
  108. animationTimer.Tick += HandleAnimationTick;
  109. animationTimer.Start();
  110. }
  111. private void Stop()
  112. {
  113. animationTimer.Stop();
  114. animationTimer.Tick -= HandleAnimationTick;
  115. }
  116. private void HandleAnimationTick(object sender, EventArgs e)
  117. {
  118. SpinnerRotate.Angle = (SpinnerRotate.Angle + 36) % 360;
  119. }
  120. private void HandleLoaded(object sender, RoutedEventArgs e)
  121. {
  122. const double offset = Math.PI;
  123. const double step = Math.PI * 2 / 10.0;
  124. SetPosition(C0, offset, 0.0, step);
  125. SetPosition(C1, offset, 1.0, step);
  126. SetPosition(C2, offset, 2.0, step);
  127. SetPosition(C3, offset, 3.0, step);
  128. SetPosition(C4, offset, 4.0, step);
  129. SetPosition(C5, offset, 5.0, step);
  130. SetPosition(C6, offset, 6.0, step);
  131. SetPosition(C7, offset, 7.0, step);
  132. SetPosition(C8, offset, 8.0, step);
  133. }
  134. private void SetPosition(Ellipse ellipse, double offset,
  135. double posOffSet, double step)
  136. {
  137. ellipse.SetValue(Canvas.LeftProperty, 50.0
  138. + Math.Sin(offset + posOffSet * step) * 50.0);
  139. ellipse.SetValue(Canvas.TopProperty, 50
  140. + Math.Cos(offset + posOffSet * step) * 50.0);
  141. }
  142. private void HandleUnloaded(object sender, RoutedEventArgs e)
  143. {
  144. Stop();
  145. }
  146. private void HandleVisibleChanged(object sender,
  147. DependencyPropertyChangedEventArgs e)
  148. {
  149. bool isVisible = (bool)e.NewValue;
  150. if (isVisible)
  151. Start();
  152. else
  153. Stop();
  154. }
  155. #endregion
  156. }
  157. }

调用的代码也贴出来吧

[csharp] view
plain
copy

  1. <Window x:Class="LoadingMask_Demo.MainWindow"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. Title="MainWindow" Height="350" Width="525"
  5. xmlns:local="clr-namespace:LoadingMask_Demo"
  6. >
  7. <DockPanel>
  8. <StackPanel Orientation="Horizontal" DockPanel.Dock="Top">
  9. <Button  Content="show" Width="70" Height="30" Click="ShowButton_Click" />
  10. <Button  Content="hide" Width="70" Height="30" Click="HideButton_Click"/>
  11. </StackPanel>
  12. <Grid Background="#FF484848" DockPanel.Dock="Bottom">
  13. <TextBlock Text="asdfasdfasdf" Foreground="White"/>
  14. <local:LoadingWait x:Name="_loading"  Visibility="Collapsed"/>
  15. </Grid>
  16. </DockPanel>
  17. </Window>
  18. 后台代码
  19. using System;
  20. using System.Collections.Generic;
  21. using System.Linq;
  22. using System.Text;
  23. using System.Windows;
  24. using System.Windows.Controls;
  25. using System.Windows.Data;
  26. using System.Windows.Documents;
  27. using System.Windows.Input;
  28. using System.Windows.Media;
  29. using System.Windows.Media.Imaging;
  30. using System.Windows.Navigation;
  31. using System.Windows.Shapes;
  32. namespace LoadingMask_Demo
  33. {
  34. /// <summary>
  35. /// Interaction logic for MainWindow.xaml
  36. /// </summary>
  37. public partial class MainWindow : Window
  38. {
  39. public MainWindow()
  40. {
  41. InitializeComponent();
  42. }
  43. private void ShowButton_Click(object sender, RoutedEventArgs e)
  44. {
  45. this._loading.Visibility = Visibility.Visible;
  46. }
  47. private void HideButton_Click(object sender, RoutedEventArgs e)
  48. {
  49. this._loading.Visibility = Visibility.Collapsed;
  50. }
  51. }
  52. }

WPF 过渡效果的更多相关文章

  1. C# WPF过渡效果实现(C# WPF Material Design UI: Transitions)

    时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...

  2. Silverlight及WPF中实现自定义BusyIndicator

    在开发Silverlight或者WPF项目时,当我们调用Web服务来加载一些数据时,由于数据量比较大需要较长的时间,需要用户等待,为了给用户友好的提示和避免用户在加载数据过程中进行重复操作,我们通常使 ...

  3. wpf动画概述

    http://msdn.microsoft.com/zh-cn/library/vstudio/ms752312(v=vs.100).aspx Windows Presentation Foundat ...

  4. WPF编程,通过KeyFrame 类型制作控件线性动画的一种方法。

    原文:WPF编程,通过KeyFrame 类型制作控件线性动画的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/articl ...

  5. WPF中的动画——(五)关键帧动画

    与 From/To/By 动画类似,关键帧动画以也可以以动画形式显示目标属性值. 和From/To/By 动画不同的是, From/To/By 动画只能控制在两个状态之间变化,而关键帧动画则可以在多个 ...

  6. silverlight,WPF动画终极攻略之白云飘,坐车去旅游篇(Blend 4开发)

    原文:silverlight,WPF动画终极攻略之白云飘,坐车去旅游篇(Blend 4开发) 这章有点长,所以我分成了两章.这一章主要是准备工作,差不多算美工篇吧,这章基本不会介绍多少动画效果,主要讲 ...

  7. silverlight,WPF动画终极攻略之迟来的第三章 动画整合篇(Blend 4开发)

    原文:silverlight,WPF动画终极攻略之迟来的第三章 动画整合篇(Blend 4开发) 有个问题想请教下大家,我仿了腾讯的SL版QQ,相似度95%以上.我想写成教程教大家怎么开发出来,会不会 ...

  8. 【WPF学习】第五十三章 动画类型回顾

    创建动画面临的第一个挑战是为动画选择正确的属性.期望的结果(例如,在窗口中移动元素)与需要使用的属性(在这种情况下是Canvas.Left和Canvas.Top属性)之间的关系并不总是很直观.下面是一 ...

  9. 【WPF学习】第六十六章 支持可视化状态

    上一章介绍的ColorPicker控件,是控件设计的最好示例.因为其行为和可视化外观是精心分离的,所以其他设计人员可开发动态改变其外观的新模板. ColorPicker控件如此简单的一个原因是不涉及状 ...

随机推荐

  1. 安装CDH6.2 agent报错

    界面报错信息提示如下: file /opt/cloudera/parcels/.flood/CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel...does not e ...

  2. 手工设置Eclipse文本编辑器的配色

    Eclipse中不同的文件都有自己专门的编辑器配色设置,下面分别说明. 文本编辑器的背景色: Window->Preferences-> General->Editors->T ...

  3. 【Java】@Scheduled常用的注解的使用

    @Scheduled注解的使用 cron cron这个参数必须要接受一个cron表达式 cron表达式是个啥呢,Cron表达式是一个具有时间含义的字符串,字符串以5个空格隔开,分为6个域,格式为 X ...

  4. 备战秋招之十大排序——O(nlogn)级排序算法

    时间复杂度O(nlogn)级排序算法 五.希尔排序 首批将时间复杂度降到 O(n^2) 以下的算法之一.虽然原始的希尔排序最坏时间复杂度仍然是O(n^2),但经过优化的希尔排序可以达到 O(n^{1. ...

  5. Java社区——个人项目开发笔记(二)

    1.B\S架构通信原理 浏览器,服务器之间产生通信,浏览器访问服务器,服务器返回一个HTML,浏览器会对HTML进行解析,并渲染相关的内容. 在解析过程中,会发现HTML里引用了css文件,js文件, ...

  6. SpringBoot和mybatis整合报错:Caused by: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 152; columnNumber: 10; 元素类型为 "mapper"

    很明显,报错是xml有问题,于是去检查,发现: 由于粗心,保存的时候,按的太频繁,多按了个s在里面,导致启动报错!

  7. k8s 执行 ingress yaml 文件报错: error when creating "ingress-myapp.yaml": Internal error occurred: failed calling webhook

    k8s 执行 ingress yaml 文件报错:错误如下: [root@k8s-master01 baremetal]# kubectl apply -f ingress-test.yaml Err ...

  8. .Net Core 踩坑记录--程序独立发布 无法运行

    背景 创建.net Core3.1 的Console程序 点击发布 选择独立部署模式 目标电脑 Win10 x64 未安装任何.Net SDK 现象 发布的程序 点击运行没有反应 或是直接闪退 解决 ...

  9. 异步编程之APM

    一.APM概述 APM即异步编程模型的简写(Asynchronous Programming Model),我们平时经常会遇到类似BeginXXX和EndXXX的方法,我们在使用这些方法的时候,其实就 ...

  10. java web课程设计(简单商城的前后端双系统,基于maven三模块开发)

    1.系统分析 1.1需求分析 实现一个简单但功能完整的商城项目,从设计到实现,规范化完成该项目,锻炼javaweb项目的编写能力,理解软件工程的软件设计思想 1.2编程技术简介 本次课程主要使用的软件 ...