------------------请教关于BMP的问题----------------------

ssfeng 2001-07-27 02:42:38
我在写一个用于网络的程序。现在我从网上可以得到一个完整的BMP图的数据流,并且储存在内存的数组中。
问:我如何才能正确的在VC中,从内存数组中还原显示这张BMP图片?

我看了一下VC关于显示BMP图的方法,但都是从文件或资源中显示,没有直接从内存中的数据显示的方法。
是不是我需要分析这串数据流,自己切出BMP头、颜色板、数据位等相关数据,再填写相关BMP结构,构建一个CBitmap实体,然后再显示?

如果是这样的话岂不是太麻烦了?如果是不确定颜色位数的BMP,那还要自己去判断?!还是VC中直接就有现成的API,可以直接把图由内存数组中读取显示出来?

请各位高手指点一条明路,费事我走错方向,研究半天,最后吐血。

另外,哪里有关于BMP图像文件结构(包括数据位位置、颜色表位置等)的详细说明?

非常感谢!

...全文
167 点赞 收藏 13
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ssfeng 2001-08-01
这问题已经解决了!:))
只要把内存中的数据砍去和文件信息相关的头14个字节,然后调用VC定义的DIBAPI。
强制把内存中的数据转化为HDIB,最后调用DIBAPI中的几个显示API,就OK!
回复
ssfeng 2001-07-27
非常感谢prog_st,已经收到了,格式说明的很详细。
现在就差解决方案了。
回复
prog_st 2001-07-27
发出
回复
ssfeng 2001-07-27
我的email是:ssfeng@21cn.com

非常非常感谢!!
回复
prog_st 2001-07-27
我有说明,请给EMail
回复
ssfeng 2001-07-27
那云影的意思是不是指:自己得从数据流中把这些结构都填写好了,构成一个CBitmap实体才行?
可我老觉得既然数据都在内存中了,那总有方法可以方便的显示吧?
回复
yyc_csdn 2001-07-27
呵呵,没办法了
像楼上老兄说的,从位图结构中取出位图数据的地址,然后强制转换未位图句柄,再进行操作
回复
cloudshadow1 2001-07-27
若要显示那个BMP图,你一定要取得那个BMP的HANDLE,然而BMP图的格式分为四个部分,
1。FILEHEADER也就是文件头,用于记录整个文件的宏观数据,例如文件大小。(长度固定)。
2。BITMAPHEADER,用于记录有关于这张位图的具体描述,如每一个位所用的颜色位数,调色板个数等。(长度固定)
3。调色板。(长度不固定,得其所占字节数可以上面两个区域的一些字断中得到)
4。具体的位图各位的数据(以矩阵的形式表示),要想取得的HANDLE其实就是这一部分的HANDLE。
在MFC中定义了有关于位图上述结构的几个STRUCT,具体可参照MSDN。
回复
ssfeng 2001-07-27
刚试过了,WINCE上开发好像不能使用这个FUNCTION。

提示:error C2039:'SetBitmapBits' : is not a member of '`global namespace''
error C2039:'SetBitmapBits' : undeclared identifier

在afxwin.h中这个是被打上了WCE_DEL的标记。 :((

回复
ssfeng 2001-07-27
ok!我去试试!
不过我是编写POCKET PC 上的WINCE程序,那上面的CBitmap类不支持这个方法。
但可以试试GDI下的这个方法。
回复
yyc_csdn 2001-07-27
LONG SetBitmapBits(
HBITMAP hbmp, // handle to bitmap
DWORD cBytes, // number of bytes in bitmap array
CONST VOID *lpBits // address of array with bitmap bits
);

用用这个API
回复
ssfeng 2001-07-27
谢谢!
那关于我问题的大概解决方案呢?
回复
kane_yj 2001-07-27
BMP图像文件结构csdn上就有
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2001-07-27 02:42
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……