需要用到GDIPlus
1、png的显示
1)可以用把png转换成CBitmap进行显示,应该会丢失透明度信息,如下:
Gdiplus::Color colorW(255, 255, 255, 255);
HBITMAP hbmReturn = NULL;
Gdiplus::Bitmap image( wsPath.c_str() );
image.GetHBITMAP( colorW, &hbmReturn );
CBitmap cBmp;
BOOL bRes = cBmp.Attach( hbmReturn );
2)用Graphics的DrawImage函数。
load Png资源
HINSTANCE hInst = GetModuleHandle(0);
//HRSRC hResource = FindResource(hInst,L"res\\stupe_bkg01.png",L"PNG"); //fail,不能直接通过路径load PNG图片
HRSRC hResource = FindResource(hInst, MAKEINTRESOURCE(IDR_PNG1), L"PNG");
DWORD res = GetLastError();
2、jpg显示
1)同png的显示1),把jpg转换成CBitmap进行显示。
2) 同png的显示2),只是load资源的时候,要是使用jpg类型的,GDI+同样也是支持的。
3) 使用windows提供的IPicture方法。
3、向指定区域输出图片
需要把图片load到兼容HDC里面,然后调用BitBlt方法进行输出。
4、png图片有透明的信息,如果放在一个背景图片上面,需要把png覆盖到的背景画到hdc中,在内存中和png合成后,再显示出来。