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. RHCE_DAY05

    cron周期性计划任务 cron周期性计划任务用来定期执行程序,目前最主要的用途是定期备份数据 软件包名:cronie.crontabs 服务名:crond 日志文件:/var/log/cron cr ...

  2. pom.xml中web.xml is missing and <failOnMissingWebXml> is set to true错误的解决

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  3. SpringMVC学习09(文件的上传和下载)

    文件上传和下载 准备工作 文件上传是项目开发中最常见的功能之一 ,springMVC 可以很好的支持文件上传,但是SpringMVC上下文中默认没有装配MultipartResolver,因此默认情况 ...

  4. Java服务突然失败:A fatal error has been detected by the Java Runtime Environment的总结

    服务启动以后过段时间自动失败:A fatal error has been detected by the Java Runtime Environment 控制台中的错误信息 A fatal err ...

  5. XXXMapper.xml中嵌套查询

    XXXMapper.xml中嵌套查询 <resultMap id="LiveUserNocticeMap" type="com.fxkj.common.vo.Liv ...

  6. 带你从0到1实现canvas的undo和redo功能

    不知不觉又到了周末,又到了Fly写文章的日子,今天给大家介绍下一个web中很常见的功能, 就是撤销和复原这样一个功能,对于任何一个画图软件,或者是建模软件.没有撤销和复原.这不是傻了对啊吧,所以本篇文 ...

  7. ManagementEventWatcher throws ManagementException with call to Stop()

    参考网址:https://stackoverflow.com/questions/46100105/managementeventwatcher-throws-managementexception- ...

  8. Nodejs koa2读取服务器图片返回给前端直接展示

    参考:https://blog.csdn.net/lihefei_coder/article/details/105435358 const fs = require('fs'); const pat ...

  9. 1、Task的优势

    1.Task的优势 ThreadPool相比Thread来说具备了很多优势,但是ThreadPool却又存在一些使用上的不方便.比如: ◆ ThreadPool不支持线程的取消.完成.失败通知等交互性 ...

  10. MVVMLight学习笔记(一)---MVVMLight概述

    一.MVVM概述 MVVM是Model-View-ViewModel的简写,主要目的是为了解耦视图(View)和模型(Model). MVVM结构如下: 相对于之前把逻辑结构写在Code Behind ...