这段代码是需要在win窗口的程序下使用的, hWnd这个是窗口的句柄
如果是控制台的话要整个HCD的话用 CreateCompatiblNULL);
创建兼容 DC 功能 (wingdi.h)——》这里有对CreateCompatiblNULL)的解释
PAINTSTRUCT ps;
HDC dc = BeginPaint(hWnd, &ps);//与下面的配对使用EndPaint//这个配套是在窗口程序里的
{
//绘制位图
//创建一个兼容的dc
HDC hMemDc = CreateCompatibleDC(dc);
//加载资源图片
HBITMAP hBitmap = (HBITMAP)LoadImage(gInstance, "02.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
if (hBitmap)
{
//获取图片的宽高
BITMAP bmp;
GetObject(hBitmap, sizeof(bmp), &bmp);//将资源句柄放进去拿出图片的宽高信息
SelectObject(hMemDc, hBitmap);//hMemDc将这个CD绑定进图片的资源句柄里面
//将图片拷贝到设备的dc里面
BitBlt(dc, 0, 0, bmp.bmWidth, bmp.bmHeight, hMemDc, 0, 0, SRCCOPY);
//也可以拷贝到图片的CD里面
HDC memDC = CreateCompatibleDC ( hMemDc );//创建一个与上个图片兼容的CD
HBITMAP memBM = CreateCompatibleBitmap ( hMemDc , nWidth, nHeight );//创建一个与上个图片兼容的位图
SelectObject ( memDC, memBM );将新建的CD(memDC )绑定到新的位图上
//将上个位图拷贝到新建的位图memDC里可以设置坐标,;拼接图片也可以用这个
BitBlt(memDC , 0, 0, bmp.bmWidth, bmp.bmHeight, hMemDc, 0, 0, SRCCOPY);
}
DeleteDC(hMemDc);
}
EndPaint(hWnd, &ps);
以上是C的处理方式
有个类叫“CImage”类,好东西价格头文件atlimage.h就能用
CImage tt;
tt 就等于是HBITMAP(资源句柄)可以这样写
tt=CreateCompatibleBitmap ( hMemDc , nWidth, nHeight );
tt.GetCD();
然后直接 tt.Save(L"new.jpg");就可以保存成图片,直接在后缀改成.png就是png图片了
是不是很方便?赶快感谢我吧
可惜这个不支持tif,但是,作为一个程序元,这是事儿吗?
这是事儿!
找了好几天,终于找到能搞tif后缀的代码了,就是我发表的另外一篇关于TIFF的,用GDI+弄得
但是没法整到内存里,只能保存到磁盘里。。。(因该是我不会)
经过目不转睛地看GDI+的方法,终于找到了一个获取资源句柄的方法了。。虽然找不到HCD,但找到这个也行啦,利用上面的CImage,不就成了吗?