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. curl的基本使用

    基本使用 1. 初始化 初始化非常简单,只需要调用curl_init()函数即可,他会返回一个curl句柄,后边几乎其他关于curl的设置,关闭等函数都需要使用这个句柄 $curl = curl_in ...

  2. SaToken学习笔记-02

    SaToken学习笔记-02 如果排版有问题,请点击:传送门 常用的登录有关的方法 - StpUtil.logout() 作用为:当前会话注销登录 调用此方法,其实做了哪些操作呢,我们来一起看一下源码 ...

  3. Semi-automation Script Based on Sleep

    The following script auto login to server 49, send 2 commands and exit from the server. Create a aut ...

  4. CAS5.3服务器搭建与客户端整合SpringBoot以及踩坑笔记

    CAS5.3服务器搭建与客户端整合SpringBoot以及踩坑笔记 cas服务器的搭建 导出证书(1和2步骤是找了课程,随便写了一下存记录,不过对于自己测试不投入使用应该不影响) C:\Users\D ...

  5. 适配Android4.4~Android11,调用系统相机,系统相册,系统图片裁剪,转换文件(对图片进行上传等操作)

    前言 最近Android对于文件的许多方法进行了修改,网络上又没有对Android4到Android11关于系统相机.系统相册和系统裁剪的适配方案,我花了几天事件总结了一下,先上源码 DEMO源码 先 ...

  6. SpringBoot开发二十三-统一记录日志

    统一记录日志 AlphaAspect package com.nowcoder.community.aspect; import org.aspectj.lang.ProceedingJoinPoin ...

  7. Mysql中的Join详解

    一.Simple Nested-Loop Join(简单的嵌套循环连接) 简单来说嵌套循环连接算法就是一个双层for 循环 ,通过循环外层表的行数据,逐个与内层表的所有行数据进行比较来获取结果,当执行 ...

  8. Spring系列之HikariCP连接池

    上两篇文章,我们讲到了Spring中如何配置单数据源和多数据源,配置数据源的时候,连接池有很多选择,在SpringBoot 1.0中使用的是Tomcat的DataSource,在SpringBoot ...

  9. 公司新来了一个质量工程师,说团队要保证 0 error,0 warning

    摘要:静态代码检查又称为静态程序分析,是指在不运行计算机程序的条件下,进行程序分析的方法. 本文分享自华为云社区<公司新来了一个质量工程师,说团队要保证 0 error,0 warning> ...

  10. java实现随机字母数字验证码

    生成随街验证码 VerifyCode 工具类 package com.meeno.common.cerifycode; import javax.imageio.ImageIO; import jav ...