如何设置WINDOWCLASSX hbrBackground alpha通道?(C++)
How do I set the WINDOWCLASSX hbrBackground alpha channel? (C++)
所以,我有一个WINDOWCLASSX,我想将背景设置为,包括alpha通道,但我只看到了一个"RGB"宏;无RGBA。
那么,如何在hbrBackground上设置alpha?这是我的代码:
WNDCLASSEX wincl;
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof (WNDCLASSEX);
wincl.hIcon = LoadIcon (GetModuleHandle(0), MAKEINTRESOURCE(IDI_MYAPP));
wincl.hIconSm = LoadIcon (GetModuleHandle(0), MAKEINTRESOURCE(IDI_MYAPP));
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = MAKEINTRESOURCE(IDR_MAINFRAME);
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
在最后一行,我希望能够设置alpha。
-谢谢你的帮助。
不能在窗口类上使用背景笔刷创建alpha通道。您必须将WS_EX_LAYERED
样式应用于窗口,然后使用SetLayeredWindowAttributes()
或UpdateLayeredWindow()
来设置窗口的alpha通道。阅读MSDN文档了解更多详细信息:
使用分层Windows
分层Windows
这对我来说很成功:
// Set WS_EX_LAYERED on this window
SetWindowLong(g_mainWnd, GWL_EXSTYLE, GetWindowLong(g_mainWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
// Make this window 70% alpha
SetLayeredWindowAttributes(g_mainWnd, 0, (255 * 70) / 100, LWA_ALPHA);
g_mainWnd
变量是对相应窗口的引用(在我的例子中,是HWND变量)。
相关文章:
- Gdiplus位图没有Alpha通道
- HBITMAP 能否包含 alpha 通道信息?
- 保存的 Gdiplus::位图始终具有 Alpha 通道 (RGBA/ARGB)
- SSE2优化用于从RGB565转换为RGB888(无alpha通道)
- 与 alpha 通道的图像重叠在 QT 上不起作用
- OpenGL Alpha通道详细信息
- 如何在不丢失alpha通道的情况下使用CImg库打开PNG
- 使用 Alpha 通道复制SDL_Surfaces
- Alpha 通道在 directx11 和 c++ 中起作用并输出绿色
- 在 CToolBar (MFC) 上具有 Alpha 通道的 32 位图像
- 如何在Qt上播放带有alpha通道的电影
- 设备上下文 (HDC) 中的 Alpha 通道
- 如何设置WINDOWCLASSX hbrBackground alpha通道?(C++)
- 将Alpha通道添加到位图或将位图转换为32位
- Opengl:使用单个通道纹理作为alpha通道来显示文本
- 使用PlayEnhMetaFile绘制具有alpha通道的增强型图元文件
- 在Blackberry 10 Cascades中,有一种方法可以使用图像掩码或alpha通道更改Blackberry C
- 如何在opencv中创建和初始化带有alpha通道的图像
- 更改DWORD颜色alpha通道值
- 从Qt中的每个像素读取Alpha通道