我正在使用Delphi XE2编写一个程序,需要将Windows增强型图元文件转换为位图。以下代码用于执行转换:
procedure TForm1.Button8Click(Sender: TObject);
var
Bitmap : TBitmap;
Metafile : TMetafile;
begin
Metafile := TMetafile.Create();
Bitmap := TBitmap.Create;
try
Metafile.LoadFromFile(Edit1.Text);
Bitmap.Width := Metafile.Width;
Bitmap.height:= Metafile.Height;
Bitmap.Canvas.Draw(0,0,Metafile);
Bitmap.SaveToFile(ChangeFileExt(Edit1.Text, '.bmp'));
finally
Bitmap.Free();
Metafile.Free();
end;
end;
对于某些图像文件,原始元文件中非常清晰的文本在最终位图中似乎有点模糊。不幸的是,我无法在此处发布示例图像,因为我没有足够的声望点数,但是如果您比较以下问题中的两个图像,就可以看到我所说的内容:
我已在两台机器上进行了测试(均为Windows 7;一台32位,另一台64位)。该问题仅在64位机器上发生;在32位机器上转换完全相同的图像文件会生成具有正常外观文本的位图。
到目前为止,我尝试过以下事项:
在64位机器上安装了32位机器上存在但64位机器上不存在的所有字体。生成的位图中的文本仍然模糊。
尝试使用SynGdiPlus库而不是上述代码执行转换。生成的位图中的文本仍然模糊。
尝试在EMF Explorer中打开原始图像文件。无论是否启用GDI+,显示的文本都是非模糊的。
有人有任何建议,可以解决这个问题吗?
以下是两个图像:
64位机器上制作的版本:
32位机器上制作的版本:
对于我处理的情况,我更喜欢第二个图像,即在32位机器上制作的图像。
EnumEnhMetaFile
将元文件播放到设备上。并修改所有的LOGFONT
记录以相应地设置质量。 - David Heffernan