如何将内存中的图象在Image中显示出来?(50分)

  • 主题发起人 主题发起人 kjzx
  • 开始时间 开始时间
K

kjzx

Unregistered / Unconfirmed
GUEST, unregistred user!
请教各位DX,如何将存储在某内存开始(pBuf)中的图象数据(BMP的),在Image中显示出来?
偶觉得应先用一个TMemoryStream,写入BMP文件的文件头和调色板等信息,再把位图数据
写进去,然后用TBitmap.LoadFromStream(MemoryStream)。说简单点就是将自己在内存中
生成一个BMP文件,然后再载入TBitmap中。不知道哪位DX能帮偶实现。先谢谢了。
 
HBITMAP hBmp=CreateDIBSection(......;
Image.Picture.Bitmap.Handle :=hBmp;

CreateDIBSection具体参阅MSDN,你必须自己构建BITMAPINFOHEADER 和BITMAPINFO ,因为只有pBuf数据,这些图像数据是1色,256色还是24位图像只有你自己知道
 
Uses JPEG

procedure TForm1.Button1Click(Sender: TObject);
Var
MemoryStream:TMemoryStream;
JPEG:TJpegImage;
begin
MemoryStream:=TMemoryStream.Create;
If OpenPictureDialog1.Execute
Then
begin
MemoryStream.LoadFromFile(OpenPictureDialog1.FileName);
JPEG:=TJpegImage.Create;
JPEG.LoadFromStream(MemoryStream);
Image1.Picture.Assign(JPEG);
end;
end;
 
是内存的图象数据--》Image
 
Var
MemoryStream:TMemoryStream;
Buffer:Pointer;
Size:Integer;
begin
...
MemoryStream:=TmemoryStream.Create;
MemoryStream.Write(Buffer^,Size)
Image1.Picture.Bitmap.LoadFromStream(MemoryStream);
end;
上面Buffer为图像数据放置的缓冲区,Size为图像数据的大小。
 
后退
顶部