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

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

时间:2023-04-10 15:05:01浏览次数:47  
标签:特效 13 Handle IntPtr C# TIMER 2D Form1 handle


    预览:

 


         下载


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

 

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



标签:特效,13,Handle,IntPtr,C#,TIMER,2D,Form1,handle
From: https://blog.51cto.com/u_130277/6180905

相关文章

  • 【贪心算法】NO134 加油站
    134.加油站在一条环路上有n个加油站,其中第i个加油站有汽油gas[i]升。你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1个加油站需要消耗汽油cost[i]升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组gas和cost,如果你可以绕环路行驶一周,则返......
  • VS2013关闭调试而不关闭IIS Express
    在VS主面板打开:工具->选项->调试->编辑继续   取消选中[启用"编辑并继续"] 就OK了(英文版的请对应相应的操作)不过这是针对所有的调试,如果你想针对单个项目就还是保留VS的设置,直接去项目属性里设置在你的Web项目上右键->属性->Web 取消选中[启用"编辑并继续"] 就OK了......
  • 第136篇:Three.js基础入门动画API:setInterval 与 requestAnimationFrame的区别
    好家伙,书接上文 functionanimate(){//请求-动画-框架requestAnimationFrame(animate);//改变正方体在场景中的位置,让正方体动起来cube.rotation.x+=0.01;cube.rotation.y+=0.01;renderer.render(......
  • CS83787单节锂电池内置升压2x13W双声道D类音频功放IC
    CS83787E是一款适用于单节锂电池供电应用,固定增益带三种防破音模式,AB/D切换静音功能内置BO0ST升压模块的尺类立体声音频功率放大器。在单节锂电池供电的情况下,CS83787E可以驱动低至35的扬声器,最大输出2X13W的恒定功率。CS83787E的AB类D类可切换模式的设计,最大限度的减少音频子系统......
  • [oeasy]python0131_[趣味拓展]各种符号_汉语拼音符号_中文全角英文字母_中文全角标点
    各种符号回忆上次内容中文字符可以有各种分类方法声母拼音检字法韵母合辙押韵的分类偏旁部首实际上unicode的排序方法我们以前勇闯地下城时候获得了一把屠龙宝刀给他镶上了❤️宝石这宝石应该如何理解?今天我们就来彻底解密红色爱心的原理闭环首先是文字我们的汉字可以构成一个闭......
  • [oeasy]python0131_[趣味拓展]各种符号_汉语拼音符号_中文全角英文字母_中文全角标点
    各种符号回忆上次内容中文字符可以有各种分类方法声母拼音检字法 韵母合辙押韵的分类 偏旁部首实际上unicode的排序方法  ​ 添加图片注释,不超过140字(可选) 我们以前勇闯地下城时候获得了一把屠龙宝......
  • macOS 13.3.1 (22E261)With OpenCore 0.9.2开发版 and winPE双引导分区原版镜像
    镜像特点原文来源于黑果魏叔官网,转载需注明出处。(下载请直接百度黑果魏叔)完全由黑果魏叔官方制作,针对各种机型进行默认配置,让黑苹果安装不再困难。系统镜像设置为双引导分区,全面去除clover引导分区(如有需要,可以自行直接替换opencore分区文件为clover引导文件)备注:此镜像仅适用与16g......
  • 13.7_link_queue
    #include<iostream>#include<stdlib.h>typedefintelemtype;typedefstructlink_node{elemtypedata;structlink_node*next;}link_node;typedefstruct{link_node*front,*rear;//链表头,链表尾,也可以成为队头队尾}link_queue;//先进先出......
  • 《花雕学AI》13:早出对策,积极应对ChatGPT带来的一系列风险和挑战
    ChatGPT是一款能和人类聊天的机器人,它可以学习和理解人类语言,也可以帮人们做一些工作,比如翻译、写文章、写代码等。ChatGPT很强大,让很多人感兴趣,也让很多人担心。使用ChatGPT有一些风险,比如数据的质量、知识的真实性、道德的原则等。为了应对这些风险,我们需要做一些工作,比如改进......
  • VisionMobile:2013年移动开发者经济报告(三):第一章 移动双寡头(上)
    第一章:移动双寡头得益者和失落者之间越来越大的鸿沟尽管很多手机制造商感到悲观,且在2012年第3季度观察到手机出货量增速放缓,但自2009年来,行业收入年复合增长率稳定在23%。增长的背后是不断提升的智能手机销量,现在占总量40%,自2011年Q3来录得12.5个百分比的巨大增幅。这是因为低廉的A......