2010-09-23 186 views

回答

3

使用此代碼

procedure ConvertEMF2BMP(EMFFileName, BMPFileName: String) ; 
var 
    MetaFile : TMetafile; 
    Bitmap : TBitmap; 
begin 
    Metafile := TMetaFile.Create; 
    Bitmap := TBitmap.Create; 
    try 
    MetaFile.LoadFromFile(EMFFileName) ; 
    with Bitmap do 
    begin 
     Height := Metafile.Height; 
     Width := Metafile.Width; 
     Canvas.Draw(0, 0, MetaFile) ; 
     SaveToFile(BMPFileName) ; 
    end; 
    finally 
    Bitmap.Free; 
    MetaFile.Free; 
    end; 
end; 
1

試着這麼做:

var 
    bmp: TBitmap; 
    wmf: TMetafile; 
bmp.SetSize(wmf.Width, wmf.Height); 
bmp.Canvas.Draw(0, 0, wmf); 
4

如果你想繪製反Aliaising的EMF,您可以使用我們的免費SynGdiPlus庫:

Gdip := TGDIPlusFull.Create; 
MF := TMetaFile.Create; 
MF.LoadFromFile(Files[Tag]); 
Bmp := Gdip.DrawAntiAliased(MF,100,100); // 100% zoom in both axis 
img1.Picture.Assign(Bmp); 

該繪圖是使用GDI +完成的,因此渲染將比直接Canvas.Draw直接方法好得多。 您可以嘗試通過將位圖拉伸到更小的尺寸來使用基本抗混疊,但在這種情況下,字體呈現將會被更改。我們的原生GDI +繪圖產生更好的渲染質量。 見http://synopse.info/forum/viewtopic.php?id=10