2010-09-23 157 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