【百木破解】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裡的是一樣的。
好的,怎麼使用就是這樣了,還是比較簡單的,想實現哪種特效就把對應特效按鈕裡的代碼複製過去就能用了
本站下載