如何使用GDI +绘制ARGB位图?

4 gdi+ image

我有ARGB类型的有效HBITMAP句柄.如何使用GDI +绘制它?

我试过方法:graphics.DrawImage(Bitmap :: FromHBITMAP(m_hBitmap,NULL),0,0); 但它不使用alpha通道.

小智 7

我有工作样本:

// 1.使用位图句柄获取信息:图像大小,位
BITMAP bmpInfo;
::GetObject(m_hBitmap, sizeof(BITMAP), &bmpInfo);
int cxBitmap = bmpInfo.bmWidth;
int cyBitmap = bmpInfo.bmHeight;
void* bits = bmpInfo.bmBits;

// 2.使用像素格式为PixelFormat32bppARGB的位创建并绘制新的GDI +位图
Gdiplus::Graphics graphics(dcMemory);
Gdiplus::Bitmap bitmap(cxBitmap, cyBitmap, cxBitmap*4, PixelFormat32bppARGB, (BYTE*)bits);
graphics.DrawImage(&bitmap, 0, 0);


Jef*_*f B -1

啊...但是 .Net 不使用 HBITMAP 并且 GDI+ 是基本 Windows GDI 之上的 C++ 库,所以我假设您使用的是非 .Net C++。

GDI+ 有一个 Bitmap 类,该类有一个 FromHBITMAP() 方法。

获得 GDI+ 位图实例后,您可以将其与 GDI+ 库一起使用。

当然,如果您可以使用 .Net 用 C# 编写程序,那就容易多了。