我有一个表格,我需要打印,但只有它的某一部分然后放大(增加比例)。到目前为止,我有以下代码:
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;
但是,这会打印整个表单。我已经用Google搜索了一些可能有用的不同内容,但我不确定如何使用它们:
GetFormImage - 有没有办法用这个选择一个特定的区域,还是仅仅采用整个形式?
使用具有给定坐标的矩形,例如rectangle1:= rect(左,上,右,下);但是,如何将矩形缩放到更大的尺寸并打印呢?同样,看起来Delphi只给出了Left和Top属性,右边只是你要去的最左边值的另一个名字吗?
更新 我试图创建一个自定义位图,然后拉伸它但我没有正确使用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;
是尝试还是最后必要的? 当我打印没有拉伸拉伸时它真的很小但是当我用拉伸拉丝打印时,很多图像都丢失了所以我必须使用它错误
答案 0 :(得分:1)
删除stretched
变量和Bitmap.Canvas.StretchDraw
(如果您愿意,还可以删除TPrintDialog
。)
// Capture your bitmap content here, and then use this code to scale and print.
Printer.Orientation := poLandscape;
Printer.BeginDoc;
Printer.Canvas.StretchDraw(Rect(0, 0, Printer.PageWidth, Printer.PageHeight), Bitmap);
Printer.EndDoc;