0

つい最近、高 dpi システム (例: 解像度が 200 dpi を超える 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 で Font/Item スケーリングが 100% に設定されていて、アプリケーションに dpi 対応であることを Windows に伝えるマニフェストがない場合に機能します。Delphi 2010 を使用しています。

4

0 に答える 0