就在最近,我们收到了关于高dpi系统的错误报告(例如4k 屏幕的分辨率高于200dpi)我们的印刷图形 未正确缩放 - 它们不会占据屏幕上的整个宽度。
以下代码应显示情况:
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意识到的。 我正在使用Delphi 2010。