0

就在最近,我们收到了关于高 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。

4

0 回答 0