wpf利用线程制作初始界面和关闭窗体特效
1.首先定义初始窗体,和主窗体。
初始窗体(StartWindow) 主窗体(MainWindow):
2.在主窗体界面中,加载初始窗体。注意在线程中操作UI元素需要使用BeginInvoke或者Invoke方法。
StartWindow start;
public MainWindow()
{
InitializeComponent();
Thread thread = new Thread(LoadResource);
thread.Start();
this.Visibility = Visibility.Hidden;
start = new StartWindow();
start.closeTheWindows += start_closeTheWindows;
start.Show();
} /// <summary>
/// 窗体start关闭之后执行
/// </summary>
private void start_closeTheWindows()
{
this.Visibility = Visibility.Visible;
} /// <summary>
/// 执行加载资源等操作
/// </summary>
/// <param name="obj"></param>
private void LoadResource(object obj)
{
Thread.Sleep();
this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate()
{
start.Close();
});
}
MainWindow.xaml.cs
3.在startWindow中用到窗体关闭特效,定义了委托,在关闭之后显示主窗体。
/// <summary>
/// 重写OnCloseIng,关闭特效
/// </summary>
bool _closinganimation = true;
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
e.Cancel = _closinganimation;
_closinganimation = false;
base.OnClosing(e); System.Windows.Media.Animation.Storyboard sb = new System.Windows.Media.Animation.Storyboard();
System.Windows.Media.Animation.DoubleAnimation dh = new System.Windows.Media.Animation.DoubleAnimation();
System.Windows.Media.Animation.DoubleAnimation dw = new System.Windows.Media.Animation.DoubleAnimation();
System.Windows.Media.Animation.DoubleAnimation dop = new System.Windows.Media.Animation.DoubleAnimation();
dop.Duration = dh.Duration = dw.Duration = sb.Duration = new Duration(new TimeSpan(, , ));
dop.To = dh.To = dw.To = ;
System.Windows.Media.Animation.Storyboard.SetTarget(dop, this);
System.Windows.Media.Animation.Storyboard.SetTarget(dh, this);
System.Windows.Media.Animation.Storyboard.SetTarget(dw, this);
System.Windows.Media.Animation.Storyboard.SetTargetProperty(dop, new PropertyPath("Opacity", new object[] { }));
System.Windows.Media.Animation.Storyboard.SetTargetProperty(dh, new PropertyPath("Height", new object[] { }));
System.Windows.Media.Animation.Storyboard.SetTargetProperty(dw, new PropertyPath("Width", new object[] { }));
sb.Children.Add(dh);
sb.Children.Add(dw);
sb.Children.Add(dop); sb.Completed += (a, b) => { this.Close(); };
sb.Begin();
}
StartWindow关闭特效代码
/// <summary>
/// 关闭子窗体委托
/// </summary>
public delegate void CloseThis();
public StartWindow()
{
InitializeComponent();
} public event CloseThis closeTheWindows;
private void Window_Closed(object sender, EventArgs e)
{
closeTheWindows();
}
定义委托代码
关闭代码下载与CSDN资源:http://download.csdn.net/detail/daixin1031017817/5501187
wpf利用线程制作初始界面和关闭窗体特效的更多相关文章
- WPF利用radiobutton制作菜单按钮
原文:WPF利用radiobutton制作菜单按钮 版权声明:欢迎转载.转载请注明出处,谢谢 https://blog.csdn.net/wzcool273509239/article/details ...
- C#子线程刷新界面并关闭窗体
目的:要循环刷新界面上的控件,同时不影响用户操作.循环结束后关闭窗体. 步骤:先创建一个窗体,窗体中拖入一个lable控件(label1),一个button控件(button1) 代码窗口输入: // ...
- WPF跨线程操作UI界面控件
在WPF应用中,如果遇到多线程的需求时,如果引用WPF控件时会引发异常,异常内容:调用线程无法访问此对象,因为另一个线程拥有该对象.具体如下: 调用代码: ThreadcountThread= ...
- 教你用Vegas Pro制作视频的遮罩转场特效
很多小伙伴在接触了Vegas之后,都想利用Vegas制作出各种酷炫的特效.小编也是一样. 今天,小编就和大家分享一下,小编近期学会的遮罩转场特效. 首先想要制作遮罩转场效果,需要的素材有:至少两个图片 ...
- WPF 利用子线程弹出子窗体的研究
一般来说子线程都是用来处理数据的,主窗体用来实现展现,但是有些时候我们希望子窗体实现等待效果,遮挡主窗体并使主窗体逻辑正常进行,这个业务需求虽然不多,但是正好我们用到了,于是我打算把研究成果写在这了. ...
- WPF 非UI线程更新UI界面的各种方法小结
转载:https://www.cnblogs.com/bdbw2012/articles/3777594.html 我们知道只有UI线程才能更新UI界面,其他线程访问UI控件被认为是非法的.但是我们在 ...
- Cocos2d-x教程第(11)讲-利用遮罩(蒙版)CCLayerColor制作新手引导界面(上)
欢迎转载,转载时请注明原文出处:http://blog.csdn.net/u012945598/article/details/17280019 源码下载地址:http://download.csdn ...
- 利用Java EE里jsp制作登录界面
jsp连接数据库.百度经验. 1.在新建的Project中右键新建Floder 2.创建名为lib的包 3.创建完毕之后的工程目录 4.接下来解压你下载的mysql的jar包,拷贝其中的.jar文件 ...
- AndroidStudio制作欢迎界面与应用图标
前言 大家好,给大家带来AndroidStudio制作欢迎界面与应用图标的概述,希望你们喜欢 欢迎界面与应用图标 本项目使用Android Studio 3.0.1作为开发工具 activity_sp ...
随机推荐
- [转]使用TeamCity对项目进行可持续集成管理(一)
一.可持续集成管理 持续集成,CI:即Continuous integration. 可持续集成的概念是基于团队(小组)协作开发而提出来的,为了提高团队开发效率与降低集成风险(早发现,早解决.晚发现, ...
- ROS导航之参数配置和自适应蒙特卡罗定位
我们的机器人使用两种导航算法在地图中移动:全局导航(global)和局部导航(local).这些导航算法通过代价地图来处理地图中的各种信息,导航stack使用两种costmaps http://www ...
- [转]C#自定义控件属性与行为
原文链接:http://blog.csdn.net/a237428367/article/details/5926445 控件应该定义属性而不是公共字段,因为可视化设计器在属性浏览器中显示属性,而不显 ...
- CommonJS和AMD/CMD
JS中的模块规范(CommonJS,AMD,CMD) 一,CommonJS NodeJS是CommonJS规范的实现,webpack也是以CommonJS的形式来书写. 在浏览器环境下,没有模块也不是 ...
- ssh框架搭建出现的问题和解决
[说明]今天尝试从头开始搭建ssh 框架, 真心是有点不太容易,可能是第一次吧,之前都是小打小闹. 一:今日完成 搭建 Spring 环境 --> 然后搭建 Hibernate 环境 --> ...
- i o s 崩溃日志分析
转自:http://blog.csdn.net/totogo2010/article/details/39892467 要分析崩溃日志,首先需要保留发布时的编译出来的.xcarchive文件.这个文件 ...
- XMLHttpRequest 对象 status 和statusText 属性对照表
XMLHttpRequest 对象 status 和statusText 属性对照表 status statusText 说明 0** - 未被始化 1** - 请求收到,继续处理 100 Conti ...
- SpringMVC如何接收json数据
请求头:Content-Type=application/json数据如: {"mobile":"12345678912","smsContent&q ...
- idle命令行按ALT+P重复调出上个语句
idle命令行按ALT+P重复调出上个语句
- jsp 通用获取所有表单值传后台
新建一个js文件,自定义一个jquery 函数. 在jsp页面引用 下面为:自定义函数 $.fn.GetDivJson = function (prifix,orgModel) { var $oute ...