C#調(diào)用Windows的API實(shí)現(xiàn)窗體動(dòng)畫
在VF、VB、PB的應(yīng)用中,有些無法通過語言工具本身來完成的或者做得不理想的功能,我們會(huì)考慮通過Windows的API來完成。
在那個(gè)年代,熟悉API是一個(gè)編程者的基本功。那個(gè)時(shí)候網(wǎng)絡(luò)信息也不發(fā)達(dá),很多資料只能考購買書籍或者自己摸索來獲取,每次掌握一個(gè)新的API應(yīng)用內(nèi)心里都有點(diǎn)小激動(dòng)。
Powerbuilder數(shù)據(jù)功能強(qiáng)大,但是界面功能尤其是動(dòng)畫功能比較弱,通過調(diào)用Windows的API實(shí)現(xiàn)窗體動(dòng)畫比較容易。
聲明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來實(shí)現(xiàn)動(dòng)畫也一樣容易。
引用:
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 = "動(dòng)畫演示:"+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;
}
}效果圖

到此這篇關(guān)于C#調(diào)用Windows的API實(shí)現(xiàn)窗體動(dòng)畫的文章就介紹到這了,更多相關(guān)C# API實(shí)現(xiàn)窗體動(dòng)畫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#高性能動(dòng)態(tài)獲取對(duì)象屬性值的步驟
這篇文章主要介紹了C#高性能動(dòng)態(tài)獲取對(duì)象屬性值的步驟,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下2020-12-12
Unity多語言轉(zhuǎn)換工具的實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了Unity多語言轉(zhuǎn)換工具的實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06
C#使用RegNotifyChangeKeyValue監(jiān)聽注冊(cè)表更改的方法小結(jié)
RegNotifyChangeKeyValue的最后一個(gè)參數(shù)傳遞false,表示以同步的方式監(jiān)聽,這篇文章主要介紹了C#使用RegNotifyChangeKeyValue監(jiān)聽注冊(cè)表更改的方法小結(jié),需要的朋友可以參考下2024-06-06
C#簡單的通用基礎(chǔ)字典實(shí)現(xiàn)方法
這篇文章主要介紹了C#簡單的通用基礎(chǔ)字典實(shí)現(xiàn)方法,包含了字典的索引、記錄、回調(diào)與查詢等技巧,需要的朋友可以參考下2014-12-12
C#程序中session值的保存方法以及轉(zhuǎn)為字符串的方法總結(jié)
這篇文章主要介紹了C#程序中session值的保存方法以及轉(zhuǎn)為字符串的方法總結(jié),經(jīng)常被用于ASP.NET網(wǎng)絡(luò)編程項(xiàng)目中,需要的朋友可以參考下2016-04-04

