C#調(diào)用Windows的API實現(xiàn)窗體動畫
在VF、VB、PB的應用中,有些無法通過語言工具本身來完成的或者做得不理想的功能,我們會考慮通過Windows的API來完成。
在那個年代,熟悉API是一個編程者的基本功。那個時候網(wǎng)絡信息也不發(fā)達,很多資料只能考購買書籍或者自己摸索來獲取,每次掌握一個新的API應用內(nèi)心里都有點小激動。
Powerbuilder數(shù)據(jù)功能強大,但是界面功能尤其是動畫功能比較弱,通過調(diào)用Windows的API實現(xiàn)窗體動畫比較容易。
聲明API調(diào)用:
function boolean AnimateWindow ( long hwnd, long dwtime, long dwflags ) library "user32"
聲明常量:
constant long AW_HOR_POSITIVE = 1 constant long AW_HOR_NEGATIVE = 2 constant long AW_VER_POSITIVE = 4 constant long AW_VER_NEGATIVE = 8 constant long AW_CENTER = 16 constant long AW_HIDE = 65526 constant long AW_ACTIVATE = 131072 conDAT* ? ?stant long AW_SLIDE = 262144 constant long AW_BLEND = 524288
在窗體的open事件中調(diào)用:
long ll_handle
ll_handle = Handle ( This )
Randomize ( 0 )
Choose Case rand ( 6 )
Case 1
AnimateWindow ( ll_handle, 1000, AW_SLIDE + AW_VER_POSITIVE + AW_ACTIVATE )
Case 2
AnimateWindow ( ll_handle, 1000, AW_SLIDE + AW_VER_NEGATIVE+ AW_ACTIVATE )
Case 3
AnimateWindow ( ll_handle, 1000, AW_SLIDE + AW_HOR_POSITIVE + AW_ACTIVATE )
Case 4
AnimateWindow ( ll_handle, 1000, AW_SLIDE + AW_HOR_NEGATIVE + AW_ACTIVATE )
Case 6,5
AnimateWindow ( ll_handle, 1000, AW_SLIDE + AW_CENTER + AW_ACTIVATE )
End Choose
在C#中調(diào)用Windows的API來實現(xiàn)動畫也一樣容易。
引用:
using System.Runtime.InteropServices;
定義常量:
public const Int32 AW_HOR_POSITIVE = 0x00000001;
public const Int32 AW_HOR_NEGATIVE = 0x00000002;
public const Int32 AW_VER_POSITIVE = 0x00000004;
public const Int32 AW_VER_NEGATIVE = 0x00000008;
public const Int32 AW_CENTER = 0x00000010;
public const Int32 AW_HIDE = 0x00010000;
public const Int32 AW_ACTIVATE = 0x00020000;
public const Int32 AW_SLIDE = 0x00040000;
public const Int32 AW_BLEND = 0x00080000;
定義調(diào)用:
[DllImportAttribute("user32.dll")]
private static extern bool AnimateWindow(IntPtr hwnd,int dwTime,int dwFlags);
調(diào)用:
private void Form1_Load(object sender, EventArgs e)
{
//this.FormBorderStyle =0 ;
Random rand = new Random();
long LL = rand.Next(1,6);
label1.Text = "動畫演示:"+LL.ToString();
switch (LL)
{
case 1:
AnimateWindow(this.Handle, 1000, AW_SLIDE + AW_VER_POSITIVE + AW_ACTIVATE);
break;
case 2:
AnimateWindow(this.Handle, 1000, AW_SLIDE + AW_VER_NEGATIVE + AW_ACTIVATE);
break;
case 3:
AnimateWindow(this.Handle, 1000, AW_SLIDE + AW_HOR_POSITIVE + AW_ACTIVATE);
break;
case 4:
AnimateWindow(this.Handle, 1000, AW_SLIDE + AW_HOR_NEGATIVE + AW_ACTIVATE);
break;
case 5:
AnimateWindow(this.Handle, 1000, AW_SLIDE + AW_CENTER + AW_ACTIVATE);
break;
case 6:
AnimateWindow(this.Handle, 1000, AW_SLIDE + AW_CENTER + AW_ACTIVATE);
break;
}
}效果圖

到此這篇關于C#調(diào)用Windows的API實現(xiàn)窗體動畫的文章就介紹到這了,更多相關C# API實現(xiàn)窗體動畫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
WPF運行時替換方法實現(xiàn)mvvm自動觸發(fā)刷新
這篇文章主要為大家詳細介紹了WPF運行時如何實現(xiàn)setter不需要調(diào)方法就可以自動觸發(fā)界面刷新,感興趣的小伙伴可以跟隨小編一起學習一下2024-04-04
UnityShader使用速度映射圖實現(xiàn)運動模糊
這篇文章主要為大家詳細介紹了UnityShader使用速度映射圖實現(xiàn)運動模糊,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-02-02

