织梦CMS - 轻松建站从此开始!

罗索

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

jackyhwei 发布于 2010-04-27 10:55 点击:次 
GDI+中的各种描画方法虽然很好用,但如果想获得一个Graphics中已经画好的内容却不那么容易了。做了一些尝试后,我用以下方法解决了这个问题。
TAG:

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上有详细的说明。
 

(eplanet)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201004/9275.html]
本文出处:CSDN博客 作者:eplanet
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容