VC内存中的bmp图片如何用指针传递给delphi使用(100分)

  • 主题发起人 主题发起人 jlugjb
  • 开始时间 开始时间
J

jlugjb

Unregistered / Unconfirmed
GUEST, unregistred user!
vc的dll中和一些关于图片处理的函数
用vc的dll的函数从磁盘中读取一张bmp图片,进行处理后如何在内存中传递给delphi进行进一步的处理
现在vc的dll处理后只能存成文件,读取速度很慢,想在内存中传递

各位大哥最好能给出代码,如果有好的解决方法,分还可以讨论
 
var
buf: pointer;
BitmapInfo: TBitmapInfo;
begin
Image1.Picture.Bitmap.Handle := CreateDIBSection(0, BitmapInfo,
GB_COLORS, buf, 0, 0);

Move( (内存地址)Data^, buf^, BitmapInfo.bmiHeader.biSizeImage);
 
Data是vc中的句柄吗,还是内存地址
 
内存地址指针
 
在vc下,这个函数怎么取得地址

hBitmap=(HBITMAP*):: LoadImage
( AfxGetInstanceHandle(),
//取得应用程序句柄
“demo1.bmp”,
//位图文件名
IMAGE_BITMAP,
//类型为Windows位图
0,0,
LR_LOADFROMFILE);
 
那位大哥详细回答一下,兄弟真的不是很明白图形处理这块
 
看你的代码,那位图应该本来就是文件。
只给你提供一下思路,
分配足够的内存,读取bmp文件到此内存,最后将这内存的首地址和SIZE传递给Delphi
 
在VC中可以用
HBITMAP* hbp;
hbp = (HBITMAP*)::LoadImage(
0,
//取得应用程序句柄
"04.bmp",
//位图文件名
IMAGE_BITMAP,
//类型为Windows位图
0,0,
LR_LOADFROMFILE);
将位图文件加入内存中,可以用
 CBitmap bitmap;
 bitmap.m_hObject=hbp与CBitmap类进行交互。
在delphi中使用
   VC中将(int)hbp作为参数传给delphi,
 image1.Picture.Bitmap.Handle := hbp;
一切OK
 
接受答案了.
 
后退
顶部