こんにちは Delphi挑戦者です。
現在Delphi7でBMP画像の印刷に挑戦中です。
現在、私がプログラムしたものは下記の通りです。
procedure TForm1.Button11Click(Sender: TObject);
begin
Printer.BeginDoc;
try
Form2.PaintTo(Printer.Canvas.Handle,Form2.Image1.Width,Form2.Image1.Height);
finally
Printer.EndDoc;
end;
これは、Form1から、Form2を印刷するように指示しています。
Form2は、画像の情報だけのものです。
記した方法で画像を印刷したところ、画面で見る大きさよりも大変小さく印刷されました。
画面で扱うピクセルの大きさとプリンタの扱うドットの大きさの違いからそうなるのだと思うのですが、その違いをどのようにして克服すれば良いのかわかりません。
また、Form2を印刷するようにしているからなのか分からないのですが、印刷時に画像の下部と右側に余白がついた形で枠がつきます。
こちらも外れるようにしたいと思っています。
わかりにくい文章ですみません。
どうぞよろしくお願いします。m(__)m
PaintToの第2引数、第3引数は、描画位置ですよ。
Image1がどの位置にあるか解りませんが、余白に関してはここを修正すれば直ると思います。
PrinterのPageWidth,PageHeightを調べてみてください。
Formのサイズとだいぶ違うと思います。
一度、TBitmapなどに拡大/縮小コピーして、それをPrinter.Canvasに印刷すればよろしいかと。
APIのGetDeviceCapsでインチあたりのピクセル数縦方向・横方向を得て、
画面のインチあたりのピクセル数(72)で割って計算すればいけます。
ツイート | ![]() |