我正在开发一个 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 位机器上转换完全相同的图像文件会生成具有正常文本的位图。
到目前为止我尝试过的事情:
将 32 位机器上存在但 64 位机器上不存在的所有字体安装到 64 位机器上。生成的位图中的文本仍然模糊。
尝试使用 SynGdiPlus 库而不是上述代码执行转换。生成的位图中的文本仍然模糊。
尝试在 EMF Explorer 中打开原始图像文件。无论 GDI+ 是否启用,那里显示的文本都是不模糊的。
有人对我如何解决这个问题有任何建议吗?
这是两张图片:
在 64 位机器上制作的版本:
在 32 位机器上制作的版本:
对于我正在处理的场景,我更喜欢在 32 位机器上制作的第二张图像。