将hDC转换为4bpp位图
Convert hDC to 4bpp bitmap
我正在开发一个应用程序,该应用程序对HDC中选择的HBITMAP进行一些GDI+绘图。绘图完成后,我需要:
- 从hDC获取位图
- 将该位图转换为4bpp位图
- 将4bpp位图的原始位发送到其他方法
我真的很失落,我对GDI+和句柄真的很陌生。有人能帮我吗?
GetDIBits是用于转换和检索原始位的函数,即(2)和(3)。
如果你还没有BITMAP的句柄,你必须用CreateCompatibleDC创建一个新的DC,在上面创建一个兼容的位图,并从源DC到目标DC执行BitBlt。然后对目标DC和位图执行GetDIBits以检索所需的数据。
首先,您要绘制HDC,而不是HBITMAP。HBITMAP通过HDC获取数据。您需要创建一个新的位图来获取4bpp数据。然而,这样的颜色深度太低(仅16种颜色)。它是基于调色板的吗?转换(颜色深度的减少)可能不是很好,或者可能不是你想要的方式。我建议从32位位图中读取RGB值,然后使用自己的代码将其转换为4bpp。否则,您将需要一个图像库,该库将根据需要执行转换。
相关文章:
- C / C++ 移位/偏移/向左或向右移动位图?
- 如何在快板的屏幕中显示子位图的绘制?
- CreateDIBSection为同一图像返回不一致的位图位值
- C++ 位图中的 ttc 字体
- 使用 GDI+ 旋转位图,然后转换为 HDC
- 难以从 CImageList 设置菜单项位图
- 如何将位图拉伸到父面板(wxWidgets 自定义)
- 如何使用 freetype2 访问单色位图中的像素状态
- 将位图 (bmp) 转换为具有透明度的 png (Windows c++)
- 安卓工作室 |CPP 文件错误错误: 位图库中对"AndroidBitmap_unlockPixels"的未定义引用
- 位图到垫子/2D 数组
- Gdiplus位图没有Alpha通道
- 如何从路径字符串加载Gdiplus::位图
- 在C++中使用Gdiplus创建透明位图
- 用C++压缩内存中的位图
- C++gdi::内存中的位图到PNG图像
- LoadImage 函数不适用于 ImageMagick 创建的位图图像
- (位图)LoadImage() 返回 NULL,GetLastError() 返回 0
- 将Qt qml文件转换为位图图像
- 将hDC转换为4bpp位图