如题
解决方案 »
- 在form上显示一个BMP图片的问题。。新手
- 如何添加系统DSN
- 动态建立窗体
- 新西兰大学计算机专业的考试题,你会吗?请提供答案。
- 如何优化,使程序执行时间减小
- 心情不爽来放点血(2)
- 请问一个关于指针的问题
- 为什么我在用ADO控件打开空数据库,再关闭时总出错?
- 做李维书中的例子程序时候,出现需要C:\Program Files\Common Files\Borland Shared\Data\employee.gdb的用户名和密码,我不知道什么意思,谁知道?
- 如何在DBGrid内的标题栏,就是表头自绘制,比如说在文字后加一个图标!
- 在线等待,如果把数据库中的图片数据,直接显示在WebBrowser中
- 请问如何在Delphi的quickReport报表预览窗口中的另存为Excel文件
var
MyBuffer: Pointer;
size: Integer;
begin
AStream.Clear;
AStream.Seek(0, soFromBeginning);
size := VarArrayHighBound(AVariant, 1) + VarArrayLowBound(AVariant, 1) + 1;
MyBuffer := VarArrayLock(AVariant);
AStream.WriteBuffer(MyBuffer^, size);
VarArrayUnlock(AVariant);
end;
//==============================================================================procedure stream2Ole(AStream: TMemoryStream; var AVariant: OleVariant);
var
MyBuffer: Pointer;
begin
AStream.Seek(0, soFromBeginning);
AVariant := VarArrayCreate([0, AStream.size - 1], VarByte);
MyBuffer := VarArrayLock(AVariant);
AStream.ReadBuffer(MyBuffer^, AStream.size);
VarArrayUnlock(AVariant);
end;
//==============================================================================
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs,jpeg, ExtCtrls, StdCtrls,ActiveX, AxCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Button2: TButton;
Image2: TImage;
procedure Button2Click(Sender: TObject);
private
procedure StreamToVariant(Stream: TMemoryStream;
var v: OleVariant);
procedure VariantToStream(const v: olevariant;
Stream: TMemoryStream);
procedure JPEGToVariant(aJPEG : TJPEGImage;
var aVariant:OleVariant);
procedure VariantToJPEG(aValue : OleVariant;
var aJPEG:TJPEGImage);
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end; var
Form1: TForm1; implementation {$R *.DFM} procedure TForm1.VariantToStream (const v : olevariant; Stream : TMemoryStream);
var
p : pointer;
begin
Stream.Position := 0;
Stream.Size := VarArrayHighBound (v, 1) - VarArrayLowBound (v, 1) + 1;
p := VarArrayLock (v);
Stream.Write (p^, Stream.Size);
VarArrayUnlock (v);
Stream.Position := 0;
end; procedure TForm1.StreamToVariant (Stream : TMemoryStream; var v : OleVariant);
var
p : pointer;
begin
v := VarArrayCreate ([0, Stream.Size - 1], varByte);
p := VarArrayLock (v);
Stream.Position := 0;
Stream.Read (p^, Stream.Size);
VarArrayUnlock (v);
end; procedure TForm1.JPEGToVariant(aJPEG : TJPEGImage; var aVariant:OleVariant);
var
Stream : TMemoryStream;
begin
try
Stream := TMemoryStream.Create; aJPEG.Assign(Image1.Picture.Bitmap);
aJPEG.SaveToStream(Stream); StreamToVariant(Stream, aVariant);
finally
Stream.Free;
end;
end;
procedure TForm1.VariantToJPEG(aValue : OleVariant;var aJPEG:TJPEGImage);
var
Stream : TMemoryStream;
begin
try
Stream := TMemoryStream.Create; VariantToStream (aValue,Stream);
aJPEG.LoadfromStream(Stream); finally
VariantClear(aValue);
Stream.free;
end;
end; procedure TForm1.Button2Click(Sender: TObject);
var
aJPEG :TJPEGImage;
aVariant : OleVariant;
begin
try
aJPEG:=TJPEGImage.Create; //JPEG To Variant
aJPEG.Assign(Image1.Picture.Bitmap);
JPEGToVariant(aJPEG,aVariant);
//Variant To JPEG
VariantToJPEG(aVariant,aJPEG);
Image2.Picture.assign(aJPEG);
finally
aJPEG.free;
end;
end; end.