高dpi系统上的图元文件打印行为

时间:2015-09-29 13:59:15

标签: delphi delphi-2010 metafile highdpi

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

0 个答案:

没有答案