内存拷贝问题

Guassfans 2009-11-13 10:21:53
各位大虾:
小弟在BCB中使用一delphi写的ActiveX,某事件下返回delphi的指针类型:Pointer MemoryBitmap(其内容为捕获的图像数据),然后我在BCB中:
Graphics::TBitmap *Captured_Bitmap;//不知道要开辟多大的内存空间
(void*) Captured_Bitmap = MemoryBitmap;//不知道MemoryBitmap内存块的大小,如何用memcpy
Image1->Picture->Bitmap =Captured_Bitmap;
这样在Image1中可显示对应图像,而第二句拷贝的只是引用地址,Captured_Bitmap的数据没有更新
而我的目的是使Captured_Bitmap数据以做他用
如何处之?


...全文
141 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
vanxeger 2012-02-27
  • 打赏
  • 举报
回复
不需要类型转换,直接用首地址就可以了,然后确定大小就OK了!
椰子天涯 2011-07-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 guassfans 的回复:]

引用 7 楼 zhgwbzhd 的回复:
首先,你确认你的图像大小指的是像素??
其次,即便是像素。你把240*320*3大小在增大点。比如增大10.试试。

可能您没注意到我说的这个MemoryBitmap,它是delphi中的Pointer无类型指针,只是指向一个内存的起始地址memcpy拷贝好像不行,不知道怎么用或怎么做类型转化
[/Quote]

您好 请问这个问题是如何解决的呢? 我也遇到了类似的问题 请指点一下
Guassfans 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhgwbzhd 的回复:]
首先,你确认你的图像大小指的是像素??
其次,即便是像素。你把240*320*3大小在增大点。比如增大10.试试。
[/Quote]
可能您没注意到我说的这个MemoryBitmap,它是delphi中的Pointer无类型指针,只是指向一个内存的起始地址memcpy拷贝好像不行,不知道怎么用或怎么做类型转化
zhgwbzhd 2009-11-13
  • 打赏
  • 举报
回复
首先,你确认你的图像大小指的是像素??
其次,即便是像素。你把240*320*3大小在增大点。比如增大10.试试。
Guassfans 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhgwbzhd 的回复:]
如果你知道图像的大小,像素的格式。

像素格式为pf24bit:24位色,每像素点3个字节

又知道图像的固定大小。

就可以算出需要占用的内存了
[/Quote]
memcpy(Captured_Bitmap,MemoryBitmap,240*320*3);//可这样是不行的
zhgwbzhd 2009-11-13
  • 打赏
  • 举报
回复
如果你知道图像的大小,像素的格式。

像素格式为pf24bit:24位色,每像素点3个字节

又知道图像的固定大小。

就可以算出需要占用的内存了
Guassfans 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 maozefa 的回复:]
首先,要搞清楚MemoryBitmap中图像的大小及像素格式,根据这些信息设置像素格式TBitmap->PixelFormat,TBitmap->Width和TBitmap->Height
其次,将MemoryBitmap的图像数据一行行拷贝到TBitmap->ScanLine,要注意MemoryBitmap每行像素的扫描宽度与行宽字节数的误差

[/Quote]
MemoryBitmap是delphi中的无类型指针
图像大小为240*320,像素格式为pf24bit
Guassfans 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhgwbzhd 的回复:]
不知道大小怎么处理啊?

是不是考虑让delphi返回指针的同时,也返回大小啊。
[/Quote]
只是做实验的话,知道图像大小为240*320
delphi那边只返回指针,对应的是图像数据,封装好的
阿发伯 2009-11-13
  • 打赏
  • 举报
回复
首先,要搞清楚MemoryBitmap中图像的大小及像素格式,根据这些信息设置像素格式TBitmap->PixelFormat,TBitmap->Width和TBitmap->Height
其次,将MemoryBitmap的图像数据一行行拷贝到TBitmap->ScanLine,要注意MemoryBitmap每行像素的扫描宽度与行宽字节数的误差
zhgwbzhd 2009-11-13
  • 打赏
  • 举报
回复
不知道大小怎么处理啊?

是不是考虑让delphi返回指针的同时,也返回大小啊。

13,825

社区成员

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

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