首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

引用c++的dll图像缓冲区指针,怎么显示位图

2013-08-14 
引用c++的dll图像缓冲区指针,如何显示位图//相机VIDEO状态使用//输入参数:上传VIDEO数据指针//功能:相机上

引用c++的dll图像缓冲区指针,如何显示位图
//相机VIDEO状态使用
//输入参数:上传VIDEO数据指针
//功能:相机上传已经记录的一桢VIDEO图象数据//
//返回TRUE,代表完成,否则FALSE//
BOOL xxVideoFrameRGB(LPVOID rgbbuf)

以上是c的dll函数,我用delphi引用(略去load dll 的部分)

    buffer := GetMemory(viewW * ViewH * 3);
    nRet := xxVideoFrameRGB(buffer);

    if nRet then
    begin
      bmpscreen := TBitMap.Create;
      stream := Tmemorystream.Create;
      stream.Read(buffer, SizeOf(buffer));
      try
        stream.Position := 0 ;
        bmpscreen.LoadFromStream(stream);
        image1.Picture.Bitmap.Assign(bmpscreen);
        //image1.Picture.Bitmap.Canvas.Draw(0, 0 , bmpscreen);
      except
        stream.Clear;
        bmpscreen.Free;
      end;
    end;

为什么提取不出来图像呢,我用stream的savefromstream后里面的bmp是空图片,是哪里有问题吗? delphi
[解决办法]


for i := 0 to viewH - 1 do      
begin        
  pLine := bmp.ScanLine[i];               
  copymemory(pLine,buffer,viewW * 3);
  Inc(buffer, viewW * 3);      
end;
Dec(buffer, viewH * viewW * 3);      

热点排行