// Hiermit können Grafiken (z.B. JPG, BMP) in eine MetaDatei geschrieben
// werden
(dabei wird jedoch keine Vektorisierung durchgeführt).

// Getestet mit D4 unter Win98
 

// Variante 1

procedure ToMF(grfk: TGraphic; mf: string); 
var 
  MetaFile: TMetaFile; 
  MFCnv: TMetaFileCanvas; 
begin 
  MetaFile := TMetaFile.Create; 
  MetaFile.Height := grfk.Height; 
  MetaFile.Width := grfk.Width; 
  MFCnv := TMetafileCanvas.Create(MetaFile, 0); 
  with MFCnv do 
  begin 
    Draw(0, 0, grfk); 
    Free; 
  end; 
  with MetaFile do 
  begin 
    SaveToFile(mf); 
    Free; 
  end; 
end; 
 
// Aufruf
procedure TForm1.Button7Click(Sender: TObject); 
var bm: TBitmap; 
begin 
  bm := TBitmap.create; 
  bm.loadfromfile('c:\haus.bmp'); 
  ToMF(bm, 'c:\test.wmf'); 
  bm.free; 
end;


//-----------------------------------------------------------

// Variante 2

procedure MakeMeta(Bild: TGraphic; Datei, Autor: string); 
var 
  dc: hDC; 
  mf: TMetafile; 
  cn: TCanvas; 
  enh: boolean; 
begin 
  if extractfileext(datei) = '.wmf' then enh := false else 
    if extractfileext(datei) = '.emf' then enh := true else 
    begin 
      showmessage('Fehlerhafte Extension'); 
      exit; 
    end; 
  cn := TCanvas.Create; 
  dc := CreateEnhMetaFile(0, nil, nil, pchar(autor)); 
  cn.handle := dc; 
  setWindowExtEx(cn.handle, bild.width, bild.height, nil); 
  cn.Draw(0, 0, bild); 
  mf := TMetafile.Create; 
  try 
    mf.enhanced := enh; 
    mf.handle := CloseEnhMetaFile(dc); 
    mf.Inch := 1000; 
    mf.height := bild.height; 
    mf.width := bild.width; 
    mf.SaveToFile(Datei); 
  finally 
    mf.free; 
  end; 
end; 
 
// Aufruf 
procedure TForm1.Button1Click(Sender: TObject); 
var tp: TPicture; 
begin 
  tp := tpicture.create; 
  tp.LoadFromFile('d:\bilder\My.bmp'); 
  MakeMeta(tp.graphic, 'c:\Test.emf', 'DBR'); 
// oder auch ...'Test.wmf'... 
  tp.free; 
end;


//-----------------------------------------------------------

// Variante 3

uses jpeg;
procedure MakeMetaX(Bild: TGraphic; Datei: string); 
var 
  mf: TMetafile; 
  enh: boolean; 
begin 
  if extractfileext(datei) = '.wmf' then enh := false else 
    if extractfileext(datei) = '.emf' then enh := true else 
    begin 
      showmessage('Fehlerhafte Extension'); 
      exit; 
    end; 
  mf := TMetafile.create; 
  mf.width := bild.width; 
  mf.height := bild.height; 
  mf.enhanced := enh; 
  with TMetafileCanvas.CreateWithComment(mf, 0, 'DBR', 'erstellt 28.6.2002') do 
  try 
    setWindowExtEx(handle, bild.width, bild.height, nil); 
    draw(0, 0, bild); 
  finally 
    free; 
  end; 
  mf.Inch := 1000; 
  mf.height := bild.height; 
  mf.width := bild.width; 
  mf.savetofile(Datei); 
  mf.free; 
end;
// Aufruf 
procedure TForm1.Button3Click(Sender: TObject); 
var tp: TPicture; 
begin 
  tp := tpicture.create; 
  tp.LoadFromFile('d:\bilder\vogel.jpg'); 
  MakeMetaX(tp.graphic, 'c:\Test.wmf'); 
  tp.free; 
end;

 


Zugriffe seit 6.9.2001 auf Delphi-Ecke