delphi 窗体的淡入淡出效果

来源:百度知道 编辑:UC知道 时间:2024/09/22 18:24:52
请问下:delphi 窗体的淡入淡出效果怎么做?
也就是说:刚开始运行窗体时,窗体从完全透明慢慢变到不透明.关闭窗体时.窗体从不透明,慢慢变到完全透明...
有没有人知道怎么做,教下小弟,谢谢..

找到主窗体的AlphaBlend属性和AlphaBlendValue属性。将AlphaBlend设置为True。然后更改AlphaBlendValue属性的值即可。值从:0-255。窗体的淡入淡出效果,可以在程序启动的时候用时钟控件,动态增加AlphaBlendValue的值。关闭则相反。

有一段C++代码供你参考一下。
在透明度那个地方,用一个定时修改一下透明度值就可以了。
SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
?? HINSTANCE hInst = LoadLibrary("User32.DLL");
?? if(hInst)
?? {
?? typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);
?? MYFUNC fun = NULL;
?? //取得SetLayeredWindowAttributes函数指针
?? fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
?? if(fun)
?? fun(this->GetSafeHwnd(),0,128,2); //透明度(0~255)
?? FreeLibrary(hInst);

窗体的OnShow事件处理函数中加入下面的代码:
AnimateWindow(Self.Handle, 500, AW_BLEND or AW_ACTIVATE);

OnClose事件中加入
AnimateWindow(Self.Handle, 500,AW_BLEND or AW_HIDE);

用API函数太麻烦,2000以上的系统可以用窗体的AlphaBlendValue属性来控制窗体的透明度,前提是AlphaBlend设为True。
Alph