当前位置: 代码迷 >> VC/MFC >> GDI+保存图像数据有关问题
  详细解决方案

GDI+保存图像数据有关问题

热度:480   发布时间:2016-05-02 03:46:51.0
GDI+保存图像数据问题
问题描述: 现在只有一个RGB32格式数据的数组(没有图片文件),怎么用GDI+实现:在这个数组代表的图像上的某个坐标处画一个矩形,最后仍然返回修改后的同一个RGB32格式数据的数组(不用保存为图片)?
输入:char *pSrcImage   //该数组保存的是RGB32数据
输出:char *pSrcImage   //和输入数组缓冲区一样,只是在某坐标处画了一个矩形框。
------解决思路----------------------
首先创建一个和你数据大小对应的Bitmap
然后使用Lockbits取得图像数据块,将你的数据写入进入;然后Unlock
Unlock后,取得Bitmap对应的Graphic,使用这个Graphic绘制一个矩形(你自己说的位置)
然后使用Bitmap的Save方法保存图像。
如果不是保存的话,还可以通过Lockbits取得数据块,将里面的数据重新填充到你说的char *pSrcImage数据区域。

最重要的部分包括1.创建与char *pSrcImage数据块一样大小的Bitmap 2.通过Lockbits取得数据区域的修改权限 并写入数据
3.使用Bitmap对应的Graphic绘制矩形,这里要考虑到你的需要,设置Graphic的Smoothingmode(特别注意),画笔宽度等等
4.重新取得数据或保存。
------解决思路----------------------
另外,RGB32要和ARGB数据相互对应,不要弄错了将Alpha值弄到R值上去等等。
------解决思路----------------------
Smoothingmode是抗锯齿
矩形框是DrawRectangle, 画线是DrawLine, 画路径是DrawPath, 画四个直角推荐你用四个路径来画
  相关解决方案