私は印刷する必要があるが、その特定のセクションのみをフォームにしてから拡大します(縮尺を大きくします)。これまでのところ、私は次のコードを持っています:Delphiはフォームのカスタム領域を印刷します
procedure TForm1.PrintButtonClick(Sender: TObject);
var
printDialog : TPrintDialog;
begin
printDialog := TPrintDialog.Create(Form1);
if printDialog.Execute then
begin
Printer.Orientation := poLandscape; //Better fit than portrait
Form1.PrintScale:=poPrintToFit;
Form1.Print;
end;
end;
しかし、これはフォーム全体を表示します。私は周りのグーグルで検索し、助けるかもしれないいくつかの異なるものを見つけましたが、私はそれらを使用する方法がわからない:
GetFormImage - これで特定の領域を選択する方法はありますか? ?
rectangle1:= rect(Left、Top、Right、Bottom)などの指定された座標の矩形を使用します。しかし、どのようにして矩形のサイズを拡大して印刷するのですか?同様に、DelphiはLeftプロパティとTopプロパティのみを提供しているように見えますが、あなたが行きたい左辺値の右の別の名前ですか?
更新日: カスタムビットマップを作成してストレッチしてみましたが、ストレッチドローを正しく使用していません。
procedure TForm1.PrintButtonClick(Sender: TObject);
var
printDialog: TPrintDialog;
Rectangle, stretched: TRect;
Bitmap: TBitmap;
begin
Bitmap := TBitmap.Create;
try
Rectangle := Rect(0, 90, 1450, 780);
stretched := Rect(0, 0, 5000, 3000); //what numbers do i put in here for streching it?
Bitmap.SetSize(Form1.Width, Form1.Height);
Bitmap.Canvas.CopyRect(Rectangle, Form1.Canvas, Rectangle);
Bitmap.Canvas.StretchDraw(stretched, Bitmap); //not sure how to use this
finally
printDialog := TPrintDialog.Create(Form1);
if printDialog.Execute then
begin
with printer do
begin
BeginDoc;
Canvas.Draw(0, 90, Bitmap);
EndDoc;
end;
end;
Bitmap.Free;
end;
end;
最後に試してみる必要はありますか?私はstretchdrawずに印刷する場合 は、それは本当に小さかったが、私はstretchdrawで印刷する場合、画像の多くは、私はそれが間違っ
「新しいレイアウト」とは何ですか?私はこのウェブサイトを使っているので、少なくとも4〜5年は同じように働いています。あなたのコードを選択し、 "フォーマットコード"ボタンをクリックしてください。 –
@JerryDodge私はIdが何かを変えたことを知っていました。私は偶然にモバイルサイトに切り替えました – L2C
あなたはTPrintDialogの目的を誤解しています。単にプリンタオプションを設定するだけです。それは実際に印刷する作業を処理しません。 TForm.Printのデフォルトの動作以外のものが必要な場合は、それを自分でコーディングする必要があります。そして、矩形の右の値は、bottom + top + heightのようにleft + widthです。 –