Image 到 DIB HBITMAP
HBITMAP ImageToBitmap( Gdiplus::Image* image ) { HDC MemoryDC = ::CreateCompatibleDC(::GetDC(NULL)); UINT height = image->GetHeight(); UINT width = image->GetWidth(); if (height <= 0 || width <= 0) { return NULL; } BITMAPINFO bmpInfo; bmpInfo.bmiHeader.biHeight = -(LONG)height; bmpInfo.bmiHeader.biWidth = width; bmpInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bmpInfo.bmiHeader.biPlanes = 1; bmpInfo.bmiHeader.biBitCount = 32; bmpInfo.bmiHeader.biCompression = BI_RGB; bmpInfo.bmiHeader.biSizeImage = 0; bmpInfo.bmiHeader.biXPelsPerMeter = 0; bmpInfo.bmiHeader.biYPelsPerMeter = 0; bmpInfo.bmiHeader.biClrUsed = 0; bmpInfo.bmiHeader.biClrImportant = 0; BYTE* pbase = NULL; HBITMAP memoryBmp = ::CreateDIBSection(MemoryDC, &bmpInfo, DIB_RGB_COLORS, (void**)&pbase, 0, 0); if ( !memoryBmp) { return NULL; } HBITMAP hOldBmp = (HBITMAP)SelectObject(MemoryDC, memoryBmp); Gdiplus::Graphics graphics(MemoryDC); Gdiplus::Rect rect(0, 0, width, height); graphics.DrawImage(image, rect); SelectObject( MemoryDC, hOldBmp); return memoryBmp; }
老忘记, 记录下
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步