The Delphi Bug List

Entry No.
107
VCL - 一般 - 印刷/プリンタ
テキスト印刷に間違った(小さい)フォントサイズが使用される
1.02 2.01 3.0 3.01 3.02 4.0 4.01 4.02 4.03 5.0 5.01 6.0 6.01 6.02 Kylix 1.0
Gotcha Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown
解説
Reported by Isaac Hepworth; checked by checked and edited by Stefan Hoffmeister
これが本当にバグかどうか、議論の余地があります:
  Printer.BeginDoc;

  Printer.Canvas.Font := Label1.Font;
  Printer.Canvas.TextOut(10, 10, Label1.Caption);

  Printer.EndDoc;
このコードはラベルのキャプションをとても小さく印刷します。原因は、画面が(およそ)96〜120dpiの解像度を持つのに対し、プリンタは(およそ)300dpiの解像度を持つためです。このコードではプリンタのフォントにラベルのフォントをセットしています(ラベルの PixelsPerInch プロパティには Screen.PixelsPerInch(100) がセットされているでしょう)。そのためこのフォントは、期待しているサイズの約3分の1のサイズで印刷されます。
解決策 / 回避方法
プリンタのフォントの PixelsPerInch プロパティも常にセットしてください:
  Printer.BeginDoc; 

  Printer.Canvas.Font.PixelsPerInch := 
            GetDeviceCaps(Printer.Handle, logPixelsY);
  Printer.Canvas.Font.Size := 12;
  Printer.Canvas.TextOut(10, 10, Label1.Caption);

  Printer.EndDoc;
Latest update of this entry: before April 1998
本家 The Delphi Bug List のエントリーはこちら
The Delphi Bug List 日本語訳 へ