就在最近,我们收到了关于高 dpi 系统(例如分辨率高于 200dpi 的 4k 屏幕)的错误报告,表明我们的打印图形没有正确缩放 - 它们没有占据屏幕上的整个宽度。
以下代码应显示情况:
procedure TForm1.Button1Click(Sender : TObject);
var mf : TMetafile;
begin
Printer.BeginDoc;
mf := TMetafile.Create;
mf.SetSize(10, 10);
with TMetafileCanvas.Create(mf, 0) do
try
MoveTO(0, 0);
LineTo(10, 10);
finally
Free;
end;
Printer.Canvas.StretchDraw( Rect( 0, 0, Printer.PageWidth, Printer.PageHeight ), mf );
mf.Free;
Printer.EndDoc;
end;
该代码应该在整个页面上拉伸 10x10 元文件 - 这在高 dpi 系统上失败。如果在 Windows 中将字体/项目缩放设置为 100%,并且应用程序中没有清单告诉 Windows 它是 dpi 感知的,则该代码有效。我正在使用德尔福 2010。