Вы можете использовать «TMetaFileCanvas» с поддержкой EMF. Фрагмент кода:
procedure TForm1.Button1Click(Sender: TObject);
var
MyMetaFile: TMetaFile;
MyCanvas: TMetafileCanvas;
begin
MyMetaFile:= TMetaFile.Create;
try
MyMetaFile.LoadFromFile('C:\example.emf');
MyCanvas:= TMetafileCanvas.Create(MyMetaFile, 0);
try
MyCanvas.Draw(0, 0, MyMetaFile);
MyCanvas.Pen.Color:= clRed;
MyCanvas.MoveTo(0, 0);
MyCanvas.LineTo(100, 100);
MyCanvas.Free;
Image1.Canvas.Draw(0, 0, MyMetaFile);
finally
MyCanvas.Free;
end;
MyMetaFile.SaveToFile('C:\example.emf');
finally
MyMetaFile.Free;
end;
end;
Таким образом, вы можете загрузить EMF, нарисовать в EMF и сохранить его. Но представить его как векторную графику от Delphi - это еще одна проблема. Delphi хорошо работает только с растровой графикой из коробки. Но, насколько я понимаю, вы только хотите прочитать и нарисовать это. Например, чтобы преобразовать его в BMP, вы можете сделать:
// destroy canvas to transfer the image into the metafile object
FreeAndNil(MyCanvas);
// draw image as normal graphic
BMP.Canvas.Draw(0, 0, MyMetaFile);
EDIT:
Как любезно отметил Марко, TMetaFileCanvas, вероятно, не будет правильно работать с EMF +. Я не проверял это, поэтому я не могу подтвердить это.
Но, похоже, есть устройство, которое работает с этим.
http://blog.synopse.info/post/2010/04/02/Antialiased-drawing-from-TMetaFile
Скачать можно с:
http://synopse.info/files/SynGdiPlus.zip
Сам не проверил, но это выглядит подходящим для работы.