素材巴巴 > 程序开发 >

WPF loading遮罩层 LoadingMask

程序开发 2023-09-09 19:38:58

大家可能很纠结在异步query数据的时候想在wpf程序中显示一个loading的遮罩吧

今天就为大家介绍下遮罩的制作

源码下载 点击此处


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



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


 后台代码:using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Data;
 using System.Windows.Documents;
 using System.Windows.Input;
 using System.Windows.Media;
 using System.Windows.Media.Imaging;
 using System.Windows.Navigation;
 using System.Windows.Shapes;
 using System.Windows.Threading;namespace LoadingMask_Demo
 {/// /// Interaction logic for LoadingWait.xaml/// public partial class LoadingWait : UserControl{#region Dataprivate readonly DispatcherTimer animationTimer;#endregion#region Constructorpublic LoadingWait(){InitializeComponent();animationTimer = new DispatcherTimer(DispatcherPriority.ContextIdle, Dispatcher);animationTimer.Interval = new TimeSpan(0, 0, 0, 0, 90);}#endregion#region Private Methodsprivate void Start(){animationTimer.Tick += HandleAnimationTick;animationTimer.Start();}private void Stop(){animationTimer.Stop();animationTimer.Tick -= HandleAnimationTick;}private void HandleAnimationTick(object sender, EventArgs e){SpinnerRotate.Angle = (SpinnerRotate.Angle + 36) % 360;}private void HandleLoaded(object sender, RoutedEventArgs e){const double offset = Math.PI;const double step = Math.PI * 2 / 10.0;SetPosition(C0, offset, 0.0, step);SetPosition(C1, offset, 1.0, step);SetPosition(C2, offset, 2.0, step);SetPosition(C3, offset, 3.0, step);SetPosition(C4, offset, 4.0, step);SetPosition(C5, offset, 5.0, step);SetPosition(C6, offset, 6.0, step);SetPosition(C7, offset, 7.0, step);SetPosition(C8, offset, 8.0, step);}private void SetPosition(Ellipse ellipse, double offset,double posOffSet, double step){ellipse.SetValue(Canvas.LeftProperty, 50.0+ Math.Sin(offset + posOffSet * step) * 50.0);ellipse.SetValue(Canvas.TopProperty, 50+ Math.Cos(offset + posOffSet * step) * 50.0);}private void HandleUnloaded(object sender, RoutedEventArgs e){Stop();}private void HandleVisibleChanged(object sender,DependencyPropertyChangedEventArgs e){bool isVisible = (bool)e.NewValue;if (isVisible)Start();elseStop();}#endregion  }
 }
 

调用的代码也贴出来吧







标签:

上一篇: Linux结束执行中的进程 下一篇:
素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。