您的位置:首页 > 编程语言 > C语言/C++

C++/MFC/GDI+——获取Graphics中的图像数据

2007-11-28 12:24 239 查看
GDI+中的各种描画方法虽然很好用,但如果想获得一个Graphics中已经画好的内容却不那么容易了。做了一些尝试后,我用以下方法解决了这个问题。

首先,获得源Graphics的HDC,这个通过GetHDC()就能得到。

然后建立一个CDC,通过Attach(HDC hdc)使一个CDC与刚刚获取的HDC关联。

再建立一个目标CDC。


CBitmap TempBmp;


TempBmp.CreateCompatibleBitmap(pDC, /*图片宽*/, /*图片高*/ );


TempDC.SelectObject(TempBmp);

然后自然是Bitblt了。

到这里,虽然已经基本完成了任务。但为了以后方便,我又做了点工作。

获得目标DC的CBitmap对象。这个通过CDC的GetCurrentBitmap()就能得到。

建立一个Bitmap对象,注意是GDI+的Bitmap对象。通过Bitmap( HBITMAP, HPALETTE)这个构造函数建立,后面的调色板直接给一个NULL就可以了。前面的HBITMAP也可以直接将CBitmap对象赋进去,这里要注意到是,不是Cbitmap*而是CBitmap。


Bitmap BitmapTemp = new Bitmap(TempBmp,NULL);

之后,这个Bitmap对象就可以自由的在GDI+中使用了。通过其Clone方法也可以方便的复制出任意个副本,注意释放就行了。




BitmapTemp->Clone( 0, 0, /*图片宽*/, /*图片高*/, PixelFormat32bppARGB);

PixelFormat32bppARGB是图像的格式。MSDN上有详细的说明。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: