我有一個表格,我需要打印但只有它的某個部分,然後放大它(增加比例)。到目前爲止,我有以下代碼:德爾福打印一個表格的自定義區域
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 - 有沒有一種方法可以選擇一個特定的區域,或者它只是採取整個表單?使用具有給定座標的矩形,例如矩形1:=矩形(左,上,右,下);但是如何將矩形打印成更大尺寸並打印?同樣,看起來Delphi只提供Left和Top屬性,Right是你想要去的最遠左值的另一個名字?
更新: 我試圖創建一個自定義位圖,然後拉伸它,但我沒有正確使用strechdraw。它在印刷時並不實際拉伸:
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的默認行爲,你需要自己編寫代碼。矩形的正確值是左+寬,就像底部是頂部+高度一樣。 –