clayui实用系列(一):在C#里切换窗口时使用各种3D/2D眩酷特效,多达13种特效。

    预览:

 




         下载


         这次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里的是一样的。

 

         好的,怎么使用就是这样了,还是比较简单的,想实现哪种特效就把对应特效按钮里的代码复制过去就能用了。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值