关于ScanLine简单问题

LWLIFE 2010-05-19 07:17:26
如下代码

Graphics::TBitmap* bmp= new Graphics::TBitmap;
bmp->Height = 800;
bmp->Width = 600;
BYTE* A;
//这里是给A赋值的地方

//然后是给BMP赋值
memcpy(bmp->ScanLine[bmp->Height-1], A, bmp->Width*bmp->Height);


请问为什么这里只把指针的值赋给了最后一行呢?而整个图像都有了,谢谢.
...全文
197 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhy 2010-05-19
  • 打赏
  • 举报
回复
因为最后一行存在最前面
周药师 2010-05-19
  • 打赏
  • 举报
回复
代碼太少了;
貼出你畫布給介面膚質的相關的代碼看看 具體點
LWLIFE 2010-05-19
  • 打赏
  • 举报
回复
谢谢.
阿发伯 2010-05-19
  • 打赏
  • 举报
回复
位图行的像素扫描线是倒置存放的,即第一行扫描线对应的是最后一行图像数据,第二行扫描线对应的是倒数第二行图像数据...,将bmp->ScanLine[bmp->Height-1]开始的所有数据拷贝给A,就是将整个图像数据拷贝了。顺便提示一下:bmp->Width*bmp->Height不见得就是整个图像数据的大小,必须是bmp->Height*stride(stride要自己计算的,4字节的整倍数)

13,825

社区成员

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

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