C#切換視窗時實現各種3D/2D眩酷特效,一共13種特效。示範!

來源:互聯網
上載者:User

         

          【百木破解】http://www.bmpj.net 

  

         這次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裡的是一樣的。

         好的,怎麼使用就是這樣了,還是比較簡單的,想實現哪種特效就把對應特效按鈕裡的代碼複製過去就能用了

 

          本站下載

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.