使窗口实现“淡入淡出”效果(非原创)

简介: 使窗口逐渐浮现,退出时逐渐消失,这主要是通过设置增强窗口样式为图层窗口,然后设置窗口的alpha值来实现的。在c#中,对应的是Form.Opacity属性。这是老外的一篇帖子里面提到的,但我对代码做了一些改进,使代码更为直观易用。
         使窗口逐渐浮现,退出时逐渐消失,这主要是通过设置增强窗口样式为图层窗口,然后设置窗口的alpha值来实现的。在c#中,对应的是Form.Opacity属性。这是老外的一篇帖子里面提到的,但我对代码做了一些改进,使代码更为直观易用。
         实现窗口的“淡出”,我们需要在创建窗口时指定窗口样式,这可以在窗口过程中创建或者初始化消息中处理,对于对话框程序,代码如下:
Code-WndProc
INT_PTR CALLBACK DlgProc(HWND hDlg,UINT Msg,WPARAM wParam,LPARAM lParam)
{
    
switch(Msg)
    {
        
case WM_INITDIALOG:
        {
            
//添加菜单等            //将窗口设置为图层窗口样式
            SetWindowLong(hDlg,GWL_EXSTYLE,::GetWindowLong(hDlg, GWL_EXSTYLE) | WS_EX_LAYERED);        
            
return true;
        }
       
case WM_CLOSE:
        {
            
//使窗口渐渐变得透明,然后关闭!!!!
            for(int i=100;i>0;i--)
                SetLayeredWindowAttributes(hDlg,
0255*i/100, LWA_ALPHA);
            
//发送WM_QUIT消息,使消息循环结束,程序退出!
            PostQuitMessage(0);
            
return true;
        }
   }
  
return false;
}

         实现窗口的“淡入”效果的代码如下,在WinMain函数中,我们使用如下代码:
        
Code-WinMain
int CALLBACK WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,LPSTR lpCmdLine,int ShowCmd)
{
        
//注册窗口类
       
        MainForm=CreateDialog(hInstance,(LPCTSTR)IDD_MAINFORM,NULL,DlgProc);
        //显示前先将窗口设为透明度为0!    
        SetLayeredWindowAttributes(MainForm,0,0, LWA_ALPHA);
        
//显示窗口
        ShowWindow(MainForm,SW_SHOW);
       
//使窗口从透明逐渐浮现!
        for(int i=0;i<=100;i++)
             SetLayeredWindowAttributes(MainForm,
0255*i/100, LWA_ALPHA);
        
//消息循环
        return 0;    
}

 

 

          ===================================

                    补充 by hoodlum1980 2008年12月22日18:40:30

          ===================================

          另外,不使用图层窗口,可以使用 AnimateWindow 这个 API 函数来完成类似功能:

          例如:AnimateWindow(hDlg, 200, AW_HIDE | AW_BLEND); //使窗口渐隐。

目录
相关文章
|
8月前
|
Android开发
撸一款”灵动“的滑动按钮
撸一款”灵动“的滑动按钮
|
11月前
|
UED
【Axure教程】鼠标滚动上下翻页效果
【Axure教程】鼠标滚动上下翻页效果
|
移动开发
【笔记】一行代码完成——h5页面上滑图片渐隐
一行代码完成——h5页面上滑图片渐隐
122 0
Qt 使用一张图片实现转圈的动画效果
这个是显示的效果,以前用的时候就是网上照一张Gif动画,完了加载进去。我们可以在Qt中使用Movie来操纵Gif动画。 这个试下方式就是通过painter绘制一个图片,通过按照一定的规律旋转图片实现的。
736 0
Qt 使用一张图片实现转圈的动画效果
|
C#
好玩的WPF第一弹:窗口抖动+边框阴影效果+倒计时显示文字
原文:好玩的WPF第一弹:窗口抖动+边框阴影效果+倒计时显示文字 版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.
987 0
|
C# 前端开发
WPF 一个弧形手势提示动画
原文:WPF 一个弧形手势提示动画 这是一个操作提示动画,一个小手在屏幕上按照一个弧形来回运动 ...
697 0
|
C# 内存技术
好玩的WPF第二弹:电子表字体显示时间+多彩呼吸灯特效按钮
原文:好玩的WPF第二弹:电子表字体显示时间+多彩呼吸灯特效按钮 版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/46457923 我们先来看看Quartz MS字体动态显示系统时间的效果,难度相较于上一篇也要简单许多。
1844 0
|
Web App开发 JavaScript 前端开发