如何显示16位灰度位图!

ncxtang 2004-06-09 09:10:01
我需要处理16位的灰度位图,可是不知如何着手,是要将它转换为8位的灰度位图吗?该怎么做呢!?请指点一下!谢谢
...全文
189 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
stkim 2004-09-21
  • 打赏
  • 举报
回复
在.net下不就是调用GDI+里的CImage么?老一点的用GDI的CDib类嘛
ncxtang 2004-09-20
  • 打赏
  • 举报
回复
兄弟,你回复得好象有点不对呀!不是我所求的,我这个问题已经解决了
stkim 2004-07-13
  • 打赏
  • 举报
回复
结贴啊
stkim 2004-06-14
  • 打赏
  • 举报
回复
最近我也作了一道图像均衡化的题目,你不妨试试这样做:
用VS.net03做这个程序的话,使用CImage类,CImage是MFC和ATL共享的新类,它能从外部磁盘中调入一个JPEG、GIF、BMP和PNG格式的图像文件加以显示,而且这些文件格式可以相互转换。
CImage封装了DIB(设备无关位图)的功能,因而可以让我们能够处理每个位图像素。它具有下列最酷特性:
1、AlphaBlend支持像素级的颜色混合,从而实现透明和半透明的效果。

2、PlgBlt能使一个矩形区域的位图映射到一个平行四边形区域中,而且还可能使用位屏蔽操作。

3、TransparentBlt在目标区域中产生透明图像,SetTransparentColor用来设置某种颜色是透明色。

4、MaskBlt在目标区域中产生源位图与屏蔽位图合成的效果。

使用CImage的一般方法是这样的过程:

(1) 打开应用程序的stdafx.h文件添加CImage类的包含文件:

#include <atlimage.h>

(2) 定义一个CImage类对象,然后调用CImage::Load方法装载一个外部图像文件。
(3) 调用CImage::Draw方法绘制图像。

不管16位还是8位的BMP都可以调用CImage类中的方法GetPixel来获取像素的数据,处理之后再用SetPixel写回新的像素数据,最后再用CImage::Save方法写到外部文件中去。

大概的步骤也就是如此,具体的方法使用一定要参照MSDN2003,Try it!

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧