Ich habe ein Formular, das ich drucken muss, aber nur einen bestimmten Abschnitt davon und dann vergrößern Sie es (erhöhen Sie die Skala). Bisher habe ich folgenden Code:Delphi einen benutzerdefinierten Bereich eines Formulars drucken
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;
Allerdings druckt das ganze Formular. Ich habe gegoogelt und ein paar verschiedene Dinge gefunden, die helfen könnten, aber ich bin nicht sicher, wie man sie benutzt:
GetFormImage - Gibt es eine Möglichkeit, einen bestimmten Bereich mit diesem zu wählen oder nimmt es einfach das ganze Formular ?
Verwendung eines Rechtecks mit gegebenen Koordinaten, z. B. rectangle1: = rect (Links, Oben, Rechts, Unten); aber dann, wie drucke ich das Rechteck zu einer größeren Größe skalieren und drucken? Genauso, wenn Delphi nur die Eigenschaften Links und Oben angibt, ist Richtig nur ein anderer Name für den weitesten linken Wert, zu dem Sie gehen möchten?
UPDATE: Ich habe versucht, ein benutzerdefiniertes Bitmap zu erstellen und es dann zu strecken, aber ich verwende das strechdraw nicht korrekt. Es ist nicht wirklich strecken, wenn sie gedruckt:
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;
Ist der Versuch und schließlich notwendig? Wenn ich ohne StretchDraw gedruckt war es wirklich klein, aber wenn ich mit dem StretchDraw gedruckt, viel das Bild fehlte so muss ich es falsch
Was "neues Layout"? Es funktioniert seit mindestens 4-5 Jahren auf die gleiche Weise, seit ich diese Webseite benutze. Wählen Sie Ihren Code und klicken Sie dann auf die Schaltfläche "Code formatieren". –
@JerryDodge Ich wusste, dass ich etwas geändert habe. Ich bin versehentlich auf die mobile Seite gewechselt – L2C
Sie missverstehen den Zweck von TPrintDialog. Es konfiguriert einfach die Druckeroptionen; Es geht nicht um die Aufgabe, tatsächlich zu drucken. Wenn Sie ein anderes als das Standardverhalten von TForm.Print benötigen, müssen Sie es selbst programmieren. Und der rechte Wert eines Rechtecks ist links + Breite, genau wie unten ist oben + Höhe. –