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上
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上
SelectObject(hmemdc, hBitmap); //关键在这里
之后,好像少了selectobject(bitmap) 吧
现在画出的图是一块白板 怎么画png 啊
我的是GDI 绘图 ,没那个+号吧 我的代码有什么问题呢