在本机 Win32 GDI 中绘制略微透明的蓝色矩形
Draw Slightly Transparent Blue Rectangle in Native Win32 GDI
如何在本机 Win32 C++中绘制一个 alpha/透明度值为 0.5(即透明度为 50%)的蓝色矩形?
使用像 RGBA() 这样的宏失败了,我不确定如何指定画笔的 alpha 值。
SetDCPenColor(hdc, RGBA(255,255,0,127));
SetDCBrushColor(hdc, RGBA(255,255,0,127));
Rectangle(hdc, 0, 0, width, height);
我很确定你需要 GDI+ 来做到这一点,但它应该与 GDI 一起存在:
//in rendering function
using namespace Gdiplus;
Graphics g (hdc);
SolidBrush brush (Color (127 /*A*/, 0 /*R*/, 0 /*G*/, 255 /*B*/));
g.FillRectangle (&brush, 0, 0, width, height);
从好的方面来说,GDI+ 虽然速度不快,但具有更强的功能和视觉效果,并且是面向对象的,这也意味着您无需担心所有这些SelectObject
和DeleteObject
调用。
请注意,初始化/结束程序以使用 GDI+ 时有几个额外的步骤,并且所有内容都在 Gdiplus
命名空间中,并且-lgdiplus
.
如果你真的需要GDI,我所知道的唯一解决方案是AlphaBlend,它确实是一种比简单地将形状绘制到设备上下文更复杂的方法。开始使用 GDI+ 总是好的,因为它仍在使用中,并且比 GDI 更容易使用。
你需要使用 AlphaBlend 函数 -
http://msdn.microsoft.com/en-us/library/windows/desktop/dd183351(v=vs.85).aspx
http://www.codeproject.com/Articles/286/Using-the-AlphaBlend-function
相关文章:
- 如何在全屏模式下(在OpenGL中)使背景透明
- 当使用透明的std函数对象时,我们还需要写空的尖括号吗
- dx11 渲染到纹理仅显示透明颜色
- SDL2 透明背景
- 无法输出对象的红色/绿色/蓝色值
- 如何创建透明垫子
- 如何创建子窗口是透明的,父窗口是不透明的?
- 为什么我不能返回带有透明函子的法线映射引用?
- 从静态库使用时隐藏不透明结构的内容
- 在OpenGL中渲染透明块
- 在C++中使用Gdiplus创建透明位图
- 对于指向C++类的不透明C指针,正确的typedef是什么
- 如何使白色透明
- 在 C++ 中为 C 样式对象创建一个透明包装类
- 使用 pybind11 混合类型转换和不透明类型
- 如何通过组合红色和蓝色无符号字节来优化混合?
- 如何让 QTabWidget 透明?
- 处理 pybind11 中的不透明指针
- Win32 c++ 更改透明静态控件中的文本将其置于底部
- 在本机 Win32 GDI 中绘制略微透明的蓝色矩形