在C#里实现各种窗口切换特效,多达13种特效
原文:http://www.cnblogs.com/clayui/archive/2011/06/28/2092126.html
预览:

这次clayui给大家带来了比较实用的东西,因为时间比较仓促,就先放出C#版,目前只有13种特效,如果大家对这个比较喜欢的话,请推荐一下,让更多的人能分享到这个,我也会继续更新添加更多特效。
先说明一下,因为本人对C#也不是特别了解,所以可能会出现一些BUG,请大家能够反馈给我。由于演示程序里只是添加了普通的C#控件,目前不是很清楚其 他的C#控件,或者一些换肤的东西放上去会不会有问题,不过从原理上来说,这个跟C#的窗口是基本无关的,应该不会有问题。
目前放出的是一个API库,C#通过调用API库的API来实现各种窗口切换效果。
好的,下面来讲解一下如何使用:
首先,当然还是初始化一下,在Form1_Load里添加:
IntPtr handle = this.Handle;
CLAYUI_CSharp_Init(handle);
释放clayui的内存当然是在Form1_FormClosed里:
CLAYUI_CSharp_Release();
然后需要在2个互相切换的form里各加一个TIMER,这里注意,只能使用单线程的响应UI事件的TIMER,使用多线程的TIMER是会出错的。
在TIMER里触发消息函数里添加:
IntPtr handle = this.Handle;
if (IsPlay() == 0)
{
EnableControl(1);
timer1.Stop();
}
else
Redraw(handle, 1);
这段代码的意思是判断是否动画播放完毕,如果没有,则调用API:Redraw来绘制窗口,如果播放完毕了就将窗口里的控件都恢复刷新,并让TIMER停止。
然后就是点击某按钮,触发窗口切换特效,在button1_Click里:
IntPtr handle = this.Handle;
IntPtr h1 = (IntPtr)0, h2 = (IntPtr)0;
CLAYUI_OnAnimation(handle, 0, 1, 0, 0);
Form2 f2 = new Form2();
f2.m_f1 = this;
f2.ShowDialog();
先是触发动画,然后再显示form2.
接下来是FORM2的处理,在Form2_Load里:
IntPtr handle = this.Handle;
Form1.MakeWindowTpt(handle, 0);
让窗口变得完全透明,然后在Form2_Shown里:
IntPtr handle = this.Handle;
IntPtr handle1 = m_f1.Handle;
//调用API: CLAYUI_InitDialog2,使FORM2和动画绑定
Form1.CLAYUI_InitDialog2(handle, handle1);
//让FORM2的所有控件都停止刷新
foreach (System.Windows.Forms.Control control in this.Controls)
{
Form1.WinRedraw(control.Handle, 0);
}
// 启动TIMER1
timer1.Start();
在FORM2里的TIMER消息响应函数timer1_Tick里添加:
IntPtr handle = this.Handle;
if (Form1.IsPlay() == 0)
{
timer1.Stop();
foreach (System.Windows.Forms.Control control in this.Controls)
{
Form1.WinRedraw(control.Handle, 1);
}
Update();
}
else
Form1.Redraw(handle, 1);
与FORM1里的是一样的。
好的,怎么使用就是这样了,还是比较简单的,想实现哪种特效就把对应特效按钮里的代码复制过去就能用了。
在C#里实现各种窗口切换特效,多达13种特效的更多相关文章
- python-web自动化-元素操作:windows窗口切换 / alert切换 / iframe切换
1. windows窗口切换:切换到要操作的窗口 有多个窗口: 1. 触发新窗口的出现 2. 得知道新窗口是谁 -- 依据窗口的window_handle来识别窗口 3. 得到窗口的window_ha ...
- selenium webdriver窗口切换(上)
selenium webdriver窗口切换,有时候在做自动化的时候需要打开很多很多的页面, 当在操作不同的页面的时候需要切换窗口,下面是如何切换到前后页面窗口的操作: package test201 ...
- Win+Tab键实现自定义程序列表间的窗口切换
程序是用AutoHotkey语言写的, 说明: 以自己使用频率的顺序在ExeList自定义的程序间切换 切换可以以所有窗口切换,也可以按程序组切换(比如在word窗口间切换) 程序组可以分别定义排除的 ...
- python - web自动化测试 - 元素操作 - 窗口切换
# -*- coding:utf-8 -*- ''' @project: web学习 @author: Jimmy @file: 元素操作-切换.py @ide: PyCharm Community ...
- 【Selenium03篇】python+selenium实现Web自动化:元素三类等待,多窗口切换,警告框处理,下拉框选择
一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第三篇博 ...
- python ui自动化之多窗口切换
wd.current_window_handle #获取当前窗口句柄 wd.window_handles #获取所有窗口句柄 wd.switch_to.window(wd.window_handles ...
- Qt界面编程之多窗口切换
1.基础知识 信号和槽 信号和槽都是函数,用来完成信号间的协同操作 2.多窗口切换实例 功能 实现登录和重新登录功能 组成 登录界面 和主窗体界面 3.源代码提供
- selenium测试(Java)--多窗口切换(十三)
selenium测试(Java)--多窗口切换(十三) 如果遇到点击按钮或链接后出现新窗口的情况,就需要使用窗口切换的方法. 本例中就是先打开百度搜索界面,然后利用js打开一个百度新闻界面,然后通过s ...
- eclipse中的窗口切换快捷键
Ctrl+Shift+F6 很简单,如果以后改用IDEA的话就没用了,但这个窗口切换确实很复杂,看起来也操作比较快.
随机推荐
- iOS开发UI篇-实现tableView的层级显示
进来要实现一个tableView 的cell层级显示,网上找的思路都各不相同.下面说一下我的实现思路. 根据根标题存储cell的展开状态,添加到字典中. 话不多说,直接上代码. #define S ...
- codeblocks 更改颜色主题
Code::Blocks是一款优秀的C/C++编辑器,但默认的颜色为白底黑字,并且没有自带更多的主题配置.因此,各种颜色主题需要手动配置. 首先关闭codeblocks软件. 下载文件colour_t ...
- nyoj 2 括号配对问题
括号配对问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行输入一个数N(0& ...
- jBPM5 vs Actitivi
http://www.blogways.net/blog/2013/07/16/activiti-jbpm-compare.html jBPM是目前市场上主流开源工作引擎之一,在创建者Tom Baey ...
- SQL SERVER HTTP请求
--开启Sql Server 通讯配置-- sp_configure ; GO RECONFIGURE WITH OVERRIDE; GO sp_configure ; GO RECONFIGURE ...
- 【转载】Oracle层次查询和分析函数
摘要 一组连续的数,去掉中间一些数,如何求出剩下的数的区间(即号段)?知道号段的起止,如何求出该号段内所有的数?知道一个大的号段范围和已经取过的号段,如何求出可用的号段?利用Oracle提供的强大的查 ...
- 特殊浮点值 Java
// Finite +-0.0 System.out.println("Finite with +-0.0:"); System.out.println("Finite ...
- 重新设置MySQL的root密码
1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录 ...
- CentOS系统Apache服务器优化详解
1.Apache优化 Apache能够在CentOS系统正常运行.但是,对于访问量稍大的站点,Apache的这些默认配置是无法满足需求的,我们仍需调整Apache的一些参数,使Apache能够在大访问 ...
- oracle创建表(并且实现ID自增)
CREATE TABLE STUDENT ( ID INT NOT NULL, NAME VARCHAR2(4000) NOT NULL, PRIMARY KEY(ID) ) TABLESPACE M ...