Dessiner sur un TBitmap dans une DLL

--- côté appli ---

function LoadJPEG(FileName:pchar; var Size:TSize):THandle; stdcall; external
'JPEGLIB.DLL';
procedure DrawJPEG(JPEG:THandle; DC:HDC; x,y:integer); stdcall; external
'JPEGLIB.DLL';
procedure FreeJPEG(JPEG:THandle); stdcall; external 'JPEGLIB.DLL';

procedure TForm1.Button2Click(Sender: TObject);
var
jpg:THandle;
size:TSize;
bmp:TBitmap;
begin
if OpenDialog1.Execute then begin
jpg:=LoadJPEG(pchar(OpenDialog1.FileName),Size);
bmp:=TBitmap.Create;
bmp.Width:=Size.cx;
bmp.Height:=Size.cy;
DrawJPEG(JPG,bmp.Canvas.Handle,0,0);
FreeJPEG(JPG);
Image1.Picture.Bitmap:=bmp;
bmp.Free;
end;
end;

--- côté DLL ---

uses
Windows,Graphics,jpeg;

function LoadJPEG(FileName:pchar):THandle; stdcall;
var
jpg:TJpegImage;
begin
jpg:=TJpegImage.Create;
Result:=THandle(jpg);
jpg.LoadFromFile(FileName);
Size.cx:=jpg.Width;
Size.cy:=jpg.Height;
end;

procedure FreeJPEG(JPEG:THandle); stdcall;
begin
TJpegImage(JPEG).Free;
end;

procedure DrawJPEG(JPEG:THandle; DC:THandle; x,y:integer); stdcall;
var
Canvas:TCanvas;
begin
Canvas:=TCanvas.Create;
try
Canvas.Handle:=DC;
Canvas.Draw(x,y,TJpegImage(JPEG));
finally
Canvas.Free;
end;
end;

exports
LoadJPEG,FreeJPEG,DrawJPEG;
Ajouter un commentaire
Pseudo
Adresse email
Site internet (optionnel)
Votre commentaire
Fiche de l'article
Mise a jour15/10/2004
VisualisationVu 1803 fois
PublicInternaute zz
CategorieDelphi - Trucs et astuces - Graphisme
Auteur de l'article
SwissDelphiCenter SwissDelphiCenter
connecté le 02/11/2011
329 articles dans la section
Contacter l'auteur