精华内容
下载资源
问答
  • 窗口半透明

    2012-11-08 11:04:15
    基于 vc6.0 亲测可以实现窗口半透明效果
  • 此demo为悬浮窗口半透明实现效果,代码较为简单,可供参考
  • [cpp] view plaincopy OnEraseBkgnd(CDC* pDC)  ...//绘制子窗口的背景,用主窗口的背景填充,实现透明效果   CRect clientRect;   CDC dcEraseBkgnd;   GetClientR

    1. OnEraseBkgnd(CDC* pDC)  
    2. {  
    3.    
    4. // TODO: 在此添加消息处理程序代码和/或调用默认值  
    5. //绘制子窗口的背景,用主窗口的背景填充,实现透明效果  
    6.     CRect clientRect;  
    7.     CDC dcEraseBkgnd;  
    8.     GetClientRect(&clientRect);  
    9.     int cx = clientRect.Width();  
    10.     int cy = clientRect.Height();  
    11. // First we should save our DC.  
    12.     CBitmap bitmap;  
    13.     if(m_dcEraseBkgnd.GetSafeHdc())// Delete our original DC.  
    14.     m_dcEraseBkgnd.DeleteDC();  
    15.            
    16.     m_dcEraseBkgnd.CreateCompatibleDC(pDC);  
    17.     bitmap.CreateCompatibleBitmap(pDC,cx,cy);  
    18.     m_dcEraseBkgnd.SelectObject(&bitmap);  
    19.    
    20.     m_dcEraseBkgnd.BitBlt(0,0,cx,cy,pDC,0,0,SRCCOPY);  
    21. //绘制一个半透明的矩形  
    22.     CDC memdc;  
    23.     CBitmap bmp,*pOldBitmap;  
    24.     memdc.CreateCompatibleDC(pDC);  
    25.     bmp.CreateCompatibleBitmap(pDC,320,110); //该函数创建与指定的设备环境相关的设备兼容的位图。  
    26. //nWidth:指定位图的宽度,单位为像素。 nHeight:指定位图的高度,单位为像素。  
    27.     pOldBitmap = memdc.SelectObject(&bmp); //选择一对象到指定的设备上下文环境中  
    28.     CBrush brush,brushOut;  
    29.     brush.CreateSolidBrush(RGB(230,230,230));  
    30.     memdc.SelectObject(brush);  
    31.     memdc.FillSolidRect(0,0,320,110,RGB(230,230,230)); //.用指定的固体色填充矩形。x,y坐标。cx,cy宽高  
    32.     BLENDFUNCTION bf;  
    33.     bf.BlendOp = AC_SRC_OVER;  
    34.     bf.BlendFlags = 0;  
    35.     bf.SourceConstantAlpha = 0xAf; //半透明(0-ff,透明度从全透明到不透明)  
    36.     bf.AlphaFormat = 0;  
    37.     pDC->AlphaBlend(0,0,320,110,&memdc,0,0,320,110,bf);  //0,0表示在对话框显示的坐标  
    38.     memdc.SelectObject(pOldBitmap);  
    39. }  

    描述: 根据MSDN所述,子窗口的半透属性是跟随父窗口的。也就是说在子窗口中用SetLayeredWindowAttributes方法完成透明是不可行的。 如果子窗口设置成overlap或者popup格式,虽然可用SetLayeredWindowAttributes实现半透,但是该窗口跟主窗口的关系往往无法或者比较麻烦去实现,比如跟随主窗口移动、显示/隐藏等。因此,本人想到一个比较简单的方法来实现子窗口的半透明效果。 重载子窗口的OnEraseBkgnd消息,在该函数里先实现全透明效果。也就是抓取主窗口在子窗口下的背景图,然后贴到子窗口的背景上。然后在子窗口画一个半透明效果的矩形,即实现了半透明效果的子窗口。
    展开全文
  • 如果子窗口设置成overlap或者popup格式,虽然可用SetLayeredWindowAttributes实现透,但是该窗口跟主窗口的关系往往无法或者比较麻烦去实现,比如跟随主窗口移动、显示/隐藏等。因此,本人想到一个比较简单..

    参考 https://blog.csdn.net/u011430225/article/details/48470373

    描述: 根据MSDN所述,子窗口的半透属性是跟随父窗口的。也就是说在子窗口中用SetLayeredWindowAttributes方法完成透明是不可行的。 如果子窗口设置成overlap或者popup格式,虽然可用SetLayeredWindowAttributes实现半透,但是该窗口跟主窗口的关系往往无法或者比较麻烦去实现,比如跟随主窗口移动、显示/隐藏等。因此,本人想到一个比较简单的方法来实现子窗口的半透明效果。 重载子窗口的OnEraseBkgnd消息,在该函数里先实现全透明效果。也就是抓取主窗口在子窗口下的背景图,然后贴到子窗口的背景上。然后在子窗口画一个半透明效果的矩形,即实现了半透明效果的子窗口。

     

    1. OnEraseBkgnd(CDC* pDC)  
    2. {  
    3.    
    4. // TODO: 在此添加消息处理程序代码和/或调用默认值  
    5. //绘制子窗口的背景,用主窗口的背景填充,实现透明效果  
    6.     CRect clientRect;  
    7.     CDC dcEraseBkgnd;  
    8.     GetClientRect(&clientRect);  
    9.     int cx = clientRect.Width();  
    10.     int cy = clientRect.Height();  
    11. // First we should save our DC.  
    12.     CBitmap bitmap;  
    13.     if(m_dcEraseBkgnd.GetSafeHdc())// Delete our original DC.  
    14.     m_dcEraseBkgnd.DeleteDC();  
    15.            
    16.     m_dcEraseBkgnd.CreateCompatibleDC(pDC);  
    17.     bitmap.CreateCompatibleBitmap(pDC,cx,cy);  
    18.     m_dcEraseBkgnd.SelectObject(&bitmap);  
    19.    
    20.     m_dcEraseBkgnd.BitBlt(0,0,cx,cy,pDC,0,0,SRCCOPY);  
    21. //绘制一个半透明的矩形  
    22.     CDC memdc;  
    23.     CBitmap bmp,*pOldBitmap;  
    24.     memdc.CreateCompatibleDC(pDC);  
    25.     bmp.CreateCompatibleBitmap(pDC,320,110); //该函数创建与指定的设备环境相关的设备兼容的位图。  
    26. //nWidth:指定位图的宽度,单位为像素。 nHeight:指定位图的高度,单位为像素。  
    27.     pOldBitmap = memdc.SelectObject(&bmp); //选择一对象到指定的设备上下文环境中  
    28.     CBrush brush,brushOut;  
    29.     brush.CreateSolidBrush(RGB(230,230,230));  
    30.     memdc.SelectObject(brush);  
    31.     memdc.FillSolidRect(0,0,320,110,RGB(230,230,230)); //.用指定的固体色填充矩形。x,y坐标。cx,cy宽高  
    32.     BLENDFUNCTION bf;  
    33.     bf.BlendOp = AC_SRC_OVER;  
    34.     bf.BlendFlags = 0;  
    35.     bf.SourceConstantAlpha = 0xAf; //半透明(0-ff,透明度从全透明到不透明)  
    36.     bf.AlphaFormat = 0;  
    37.     pDC->AlphaBlend(0,0,320,110,&memdc,0,0,320,110,bf);  //0,0表示在对话框显示的坐标  
    38.     memdc.SelectObject(pOldBitmap);  
    39. }  
    展开全文
  • C++ 透明半透明效果设置 记得自行在文件夹中添加背景图片和一张角色图片
  • 根据MSDN所述,子窗口的半透属性是跟随父窗口的。也就是说在子窗口中用SetLayeredWindowAttributes方法完成透明是不可行的。本人偷巧,在父窗口不透明情况下,简单实现子窗口半透明效果
  • 半透明效果是字面上有能看出来的,但实际上根据MSND,该类型的窗口还能更好的支持非矩形的窗口,使之显示效果更平滑流畅(暗地里猜测是使用了硬件加速而达到的效果)。在win8之前WS_EX_LAYERED只能用于顶层窗口,win...

     

    介绍:

    Layered Windows是windows窗口中的一类,提供类似半透明的效果(阿尔法混合)。半透明效果是字面上有能看出来的,但实际上根据MSND,该类型的窗口还能更好的支持非矩形的窗口,使之显示效果更平滑流畅(暗地里猜测是使用了硬件加速而达到的效果)。在win8之前WS_EX_LAYERED只能用于顶层窗口,win8及之后版本子窗口也可以使用。

    使用:

    首先要做的就是在CreateWindowEx()时加入 WS_EX_LAYERED风格。之后调用SetLayeredWindowAttributes()。该函数原型如下:

      

    BOOL WINAPI SetLayeredWindowAttributes(
      _In_ HWND     hwnd,      //窗口句柄
      _In_ COLORREF crKey,      //设置色彩通道的相对分量 使用RGB宏
      _In_ BYTE     bAlpha,     //阿尔法值,0-225之间
      _In_ DWORD    dwFlags     //LWA_ALPHA或LWA_COLORKEY,或二者都有
    );
    /*
    *LWA_ALPHA :使用阿尔法值显示透明效果
    LWA_COLORKEY:使用RGB通道过滤颜色
    */

    那么两种Flag有什么区别呢,或者说它们分别是什么效果呢?不多说上图就明白了。

    LWA_COLORKEY有效时参数指定的    LWA_ALPHA 有效时对窗口整体使用半

    颜色被视为透明                 透明效果,阿尔法值由参数指定。 

                     

    左侧是LWA_COLORKEY,可以看到在窗口    右侧是 LWA_ALPHA可以看到整体呈现半透明,而且

    上画的RGB=(255,0,255)的圆形被视    在窗口上绘制的圆形也是半透明的。(也注意到对圆型

    为透明                     窗口其坐标还是按矩形的左上角算的) 

     

    两种效果可以同时使用效果,其效果就是一个半透明的黑色月亮。

    可以使用UpdataLayeredWindow()函数更新Layered Window。比如重新设置其透明度,位置,大小,形状等。该函数会更新整个窗口。不需要担心被遮挡的窗口的更新问题,系统会处理好的。(对一个Layered窗口系统总是保存其下面的图像,并自动更新,这意味着占用更多内存,所以不需要时通过SetWindowLong()删除WS_LAYERED风格。这在下面还会说)

    对透明的部分(比如上面左图月牙缺掉的部分或者对右图设置阿尔法值为0)点击鼠标时,鼠标消息会透过窗口,也就是Layered窗口在此处不接受鼠标消息。这很符合所看即所得的设计理念,用户感觉看不到的地方就是没有,他们不必理解什么阿尔法混合。

    如何设置Layered窗口为普通的窗口

    如果不再需要透明效果,尽早去掉Layered属性可以提高性能,标准的做法如下:

    // Remove WS_EX_LAYERED from this window styles
    SetWindowLong(hwnd, 
                  GWL_EXSTYLE,
                  GetWindowLong(hwnd, GWL_EXSTYLE) & ~WS_EX_LAYERED);
    
    // Ask the window and its children to repaint
    RedrawWindow(hwnd, 
                 NULL, 
                 NULL, 
                 RDW_ERASE | RDW_INVALIDATE | RDW_FRAME | RDW_ALLCHILDREN);

    最后说一点,如果窗口已经创建好了也有其他的办法,调用SetWindowLong(),重新设置窗口风格即可。但是对一个已经显示在屏幕上的窗口修改其风格为 WS_EX_LAYERED时会发现该窗口不见了,此时调用UpdataLayeredWindow()或SetLayeredWindowAttributes()后会出现你想要的样子。

    另外:一旦 SetLayeredWindowAttributes 被调用了, 之后对 UpdateLayeredWindow 的调用都会失败直到重新改变了窗口的Layered属性。

     

    转载于:https://www.cnblogs.com/painterQ/p/6706547.html

    展开全文
  • css中样式中添加 opacity表示的是半透明的意思,.5就是50%,如果你设置成1就又不是透明的了 opacity: .5;

    css中样式中添加
    opacity表示的是半透明的意思,.5就是50%,如果你设置成1就又不是透明的了

    opacity: .5;
    
    展开全文
  • JQuery实现可拖动层,拖动时有半透明效果,
  • 仿Win7半透明窗口效果

    2016-07-01 17:21:16
    .net技术,实现半透明窗体,有运行文件
  • 悬浮窗口半透明实现效果.rar
  • 弊端1:继承QWidget,有父窗口MainWindow时,setWindowOpacity无法起作用,放在QWidget上的控件不能半透明。 弊端2:继承QWidget,父窗口设置为null时,setWindowOpacity可起作用,但点击主窗口会压盖掉QWidget,悬浮...
  • 主要介绍了如何点击一个按钮实现弹出一个居中窗口,并且此窗口带有半透明的遮罩层效果,需要的朋友可以参考下
  • 该代码在VS2010的环境下开发完成,实现了按钮和静态文本框控件的不透明,和主窗口的半透明。实现的主要思想是由半透明对话框,和红色镂空对话框重叠实现的。...二者重叠起来既可以实现窗口半透明和控件不透明的效果
  • Android高级应用源码-悬浮窗口半透明实现效果.zip
  • 用wpf打造窗口半透明效果

    千次阅读 2011-10-04 15:38:27
    自Windows Vista起,Windows的桌面效果就增加了对Aero透明玻璃效果的支持,系统默认的话只是对标题栏或者菜单栏进行半透明处理,如果想实现整个窗口都Aero化的话,得引用一个系统DLL来实现。首先看效果图:   ...
  • 窗口透明效果

    2008-04-14 14:44:32
    实现窗口透明效果,按百分之几进行透明度。
  • 悬浮窗口半透明实现效果.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • 自做的opengl半透明效果,其中还包含obj模型加载,mipmap纹理。因为要有一个场景演示半透明效果半透明效果给出了两种不同的混合因子的效果。
  • PNG图片窗口透明效果

    2011-05-06 16:31:10
    PNG图片窗口透明效果,PNG图片窗口透明效果
  • 用的透明窗口风格WS_EX_LAYERED ,然后通过UpdateLayeredWindow 函数对窗口皮肤已经按钮图像进行贴图,所谓的按钮并非控件,而是通过判断区域来模拟的按钮响应。程序性能上有很大不足,希望共同交流.
  • 2、主窗口半透明(以白里透红为例) 1、主窗口全透明 直接在UI的主窗口中,拖出几个控件,下图我放置了一个QPushButton按钮、QCheckBox复选框、设置了蓝色背景的QWidget。 然后用代码设置主窗体的透明: ...
  • 比如,在文件中: import tkinter as tk win = tk.Tk() win.attributes("-alpha", 0.4) win.title('Hello') win.mainloop() 编译后显示的窗口并没有实现半透明,一点透明效果都没有 在交互式命令窗口中: >>>import ...
  • windows下vim设置半透明效果

    千次阅读 2015-04-22 17:45:49
    第一步: 首先将vimtweak.dll这个插件放在与gvim.exe同级目录下 第二步: 在.vimrc配置文件中加入 ...au GUIEnter * call libcallnr("vimtweak.dll", "SetAlpha", 234) ...后面的数字越小,说明透明效果越明显。
  • Splash半透明效果实现

    2012-06-25 17:50:17
    MFC实现的游戏的Launcher效果,伪异形窗口透明部分还是可以响应鼠标事件。
  • 设置透明效果 窗口激活时候的效果窗口未激活时效果: 隐藏标题栏 显示状态栏 隐藏标签栏 最终效果: 快捷键 含义 Tab 自动路径补全 Ctrl+T 建立新页签 Ct...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,097
精华内容 8,038
关键字:

怎样设置窗口的半透明效果