BMP的显示

G66606495 2006-04-12 09:33:36
知道位图文件头,位图信息头,调色板和位图数据后 如何让他显示到IMAGE上
...全文
183 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
G66606495 2006-04-14
  • 打赏
  • 举报
回复
一并了,还有个图象快速反转的也丢这吧.
unsigned char *m_pBuffer,*pSrc;
m_pBuffer=(unsigned char*)(AllocMem(768*576*3));
iFileHandle= FileOpen(OpenPictureDialog1->FileName, fmOpenRead);
FileSeek(iFileHandle, 54, 0);
pSrc=m_pBuffer+ width*(height-1)*3;
for (int i=0;i<(height-1);i++)
{
FileRead(iFileHandle, pSrc, width * 3);
pSrc=pSrc-width*3;
}
FileClose(iFileHandle);
pImg =m_pBuffer;
xiaoshi0 2006-04-14
  • 打赏
  • 举报
回复
留作纪念
G66606495 2006-04-14
  • 打赏
  • 举报
回复
看了书后用C++搞定,完全弄明白后才发现其实用BCB的BITMAP的ScanLine就完全可以处理了.下面是我用canLine做的一个图象隔行隔列抽取的一个小例子 发上来个后来的初学者参考参考:
bitmap11= new Graphics::TBitmap; //源
bitmap11->LoadFromFile(openname);
bitmap22= new Graphics::TBitmap; //目标
bitmap22->PixelFormat=pf24bit; //指定图片类型 1,8,24
bitmap22->Width=(width/2); // width是源的高度
bitmap22->Height=(height/2);

Byte *newscan,*ptr;
for (int i=0;i<(height/2);i++)
{
newscan=static_cast<Byte*>(bitmap11->ScanLine[i*2]); 把指针指向bitmap11的第行i*2
ptr =static_cast<Byte*>(bitmap22->ScanLine[i]);
for (int j=0;j<(width/2);j++) //把bitmap11对应的每个象素点读过来放到bitmap22
{
ptr[j*3]=newscan[2*j*3]; //24位的嘛,那每个象素值是3个字节
ptr[j*3+1]=newscan[2*j*3+1];
ptr[j*3+2]=newscan[2*j*3+2];
}
}
Image_vehid1->Picture->Bitmap->Assign(bitmap22); //显示bitmap22
delete bitmap11;
delete bitmap22;
caizhen2000_82 2006-04-14
  • 打赏
  • 举报
回复
赞妖哥一下!!
ribut9225 2006-04-14
  • 打赏
  • 举报
回复
好书

比较详细
BlueDeepOcean 2006-04-14
  • 打赏
  • 举报
回复
的确是一本好书
G66606495 2006-04-12
  • 打赏
  • 举报
回复
这个问题没问好.
我的意思是我怎么创建这个位图并把上面那些信息付给它,图象方面的东西一点不懂,上面那些信息是从别人的动态库里读到的的.
constantine 2006-04-12
  • 打赏
  • 举报
回复
都知道了就放到一个bmp里面,然后赋值给iamge
fu
G66606495 2006-04-12
  • 打赏
  • 举报
回复
妖哥,我找到了,就不用发了.
G66606495 2006-04-12
  • 打赏
  • 举报
回复
有吗 都发来我看看 lz_g166@163.com
ccrun.com 2006-04-12
  • 打赏
  • 举报
回复
第4章就是:
http://www-scf.usc.edu/~flv/ipbook/chap04.htm

呵呵。一共10章。
G66606495 2006-04-12
  • 打赏
  • 举报
回复
妖哥,能不能把这书的第四章也发来我看看.我这没这方面的资料.
ccrun.com 2006-04-12
  • 打赏
  • 举报
回复
这个对你有帮助。

http://www-scf.usc.edu/~flv/ipbook/chap01.htm
houing_0123 2006-04-12
  • 打赏
  • 举报
回复
定义一个临时的TBitmap 对象,用完删除就行了啊

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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