HDC hmemdc=CreateCompatibleDC(hdc);//创建与客户区相兼容的内存DC,这个内存DC是一个黑点
CreateCompatibleBitmap(hmemdc ,230,80);// 初始化两个参数,后面会用到
IImagingFactory *pImgFactory = NULL;
IImage *pImage = NULL; // 调用系统的com组件,返回值HRESULT pngFlag表示是否打开成功,
CoInitializeEx(NULL, COINIT_MULTITHREADED);
HRESULT pngFlag = SUCCEEDED(CoCreateInstance (guid1,NULL,CLSCTX_INPROC_SERVER,guid2,(void **)&pImgFactory)); if (pngFlag)  // 如果成功,则开始绘制png图像到HDC上
{
if(gflag==0)
{ if(SUCCEEDED(pImgFactory->CreateImageFromFile(_T("\\Program Files\\FCity\\bj.png"),&pImage)))
{
RECT rc = {6,0,236,80};
pImage->Draw(hmemdc, &rc, NULL);
pImage->Release();
}
}
if(SUCCEEDED(pImgFactory->CreateImageFromFile(_T("\\My Documents\\briefcase\\weather.png"),&pImage)))
{
RECT rc = {6,0,81,55};
pImage->Draw(hmemdc, &rc, NULL);
pImage->Release();
} } // 关闭系统的com组件
CoUninitialize();
BitBlt(hdc,5,0,300,250,hmemdc,0,0,SRCCOPY);//把内存DC转送到客户区DC上

解决方案 »

  1.   

    HBITMAP hBitmap = CreateCompatibleBitmap(hdc ,230,80);
    SelectObject(hmemdc, hBitmap); //关键在这里
      

  2.   

    bitmap = CreateCompatibleBitmap(hmemdc ,230,80);
    之后,好像少了selectobject(bitmap) 吧  
      

  3.   

    我等下试下,对了 bitmap 和bmp 图片有关系吗? 我加载png 图  能用吗
      

  4.   


    现在画出的图是一块白板 怎么画png 啊
      

  5.   


    我的是GDI 绘图  ,没那个+号吧  我的代码有什么问题呢