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 }
}
调用的代码也贴出来吧
后台代码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;namespace LoadingMask_Demo
{/// /// Interaction logic for MainWindow.xaml/// public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}private void ShowButton_Click(object sender, RoutedEventArgs e){this._loading.Visibility = Visibility.Visible;}private void HideButton_Click(object sender, RoutedEventArgs e){this._loading.Visibility = Visibility.Collapsed;}}
}
标签:
上一篇:
Linux结束执行中的进程
下一篇:
相关文章
-
无相关信息