![]() |
Re: Komplettes Formular ausdrucken?
War ich also doch auf dem falschen Weg...hab die Eingaben miteinander Vertauscht :oops:
Nun eine letzte Frage habe ich doch noch zu dem Thema, und zwar wie weit die X und Y Achsen bei Canvas gehen...genauer gesagt will ich damit versuchen das Bild auf dem Ausdruck zu Zentrieren o. gibts da vielleicht sogar eine direkte Anweisung? |
Re: Komplettes Formular ausdrucken?
Zitat:
|
Re: Komplettes Formular ausdrucken?
Danke, sorry das ich jetzt erst zurückschreibe, hatte keinen PC übers Wochenende.
Ich habe deinen mal nach den Befehlen gegoogelt und bin auf folgendes (als einzig sinnvolles) Ergebnis gekommen:
Delphi-Quellcode:
Also, WENN ich das jetz endlich richtig verstanden habe (wovon ich ausgehe...) sind die ersten 2 Parameter da, um anzugeben welche Position der Ausdruck auf dem Blatt haben soll und die letzten zwei dazu da um die letztendliche größe auf dem Papier zu bestimmten.
Printer.Canvas.StretchDraw(Rect((Printer.PageWidth - Bitmap.Width) div 2, (Printer.PageHeight - Bitmap.Height) div 2, Bitmap.Width*10, Bitmap.Height*8), Bitmap);
Aber wieso verzehrt dann das Gesamte Druckbild wenn ich
Delphi-Quellcode:
anstelle von (0, 0, ...) einfüge, wenn ich nämlich mit der zweiten Variante mein Programm starte und das Formular ausdrucke ist das Druckbild vollkommen normal.
(Printer.PageWidth - Bitmap.Width) div 2, (Printer.PageHeight - Bitmap.Height) div 2, ...)
Aber die erste Variante ist meines erachtens nicht verkehrt... :shock: Was ist da bloß falsch...ich habe schon alle möglichen Varationen versucht aber der Ausdruck ist trotzdem nicht Zentriert :wall: |
Re: Komplettes Formular ausdrucken?
Zitat:
|
Re: Komplettes Formular ausdrucken?
Ah ok...das erklärt natürlich einiges :/
|
Re: Komplettes Formular ausdrucken?
Hallo mal wieder :-D
nachdem ich mich mit StretchDraw mm für mm vorgetastet hatte und trotzdem keinen Schritt näher an mein Ziel gekommen bin das der Ausdruck auf dem Papier Zentriert ist versuche ich nun die Bitmap vorher zu vergrößern und dann mit Draw den Ausdruck zu Zentrieren, dies hat aber nur halbwegs geklappt denn der Ausdruck ist jetzt zwar Zentriert und die Druckfläche an sich entspricht auch meinen Vorstellungen aber das Formular an sich ist nur ganz klein links oben in der Ecke abgebildet... Hier mal eine kleine Abbildung so wie es aussieht (hab hier leider keinen Scanner...): ![]() Und hier auch der entsprechende Code Ausschnitt:
Delphi-Quellcode:
Ich habe keine Ahnung wo dran das Liegen könnte, kennt das Problem vielleicht jemand oder weiß eine Lösung :?:
procedure TForm1.Drucken1Click(Sender: TObject);
begin if PrintDialog1.execute then Bitmap := GetFormImage; try Clipboard.Assign(Bitmap); Bitmap.Height := Bitmap.Height * 7; //hier wird die größe verändert Bitmap.Width := Bitmap.Width * 8; //hier auch with Printer do begin BeginDoc; Printer.Canvas.Draw((PageWidth - Bitmap.Width) div 2, (PageHeight - Bitmap.Height) div 2, Bitmap); // und hier wird der Ausdruck dann Zentriert EndDoc; end; finally Bitmap.Free; end; end; |
Re: Komplettes Formular ausdrucken?
Zitat:
|
Re: Komplettes Formular ausdrucken?
Hmm ja, soweit war ich auch aber wenn ich bei google oder in verschiedenen Tutorials suche finde ich keine wirklich hilfreiche Antwort.
Nur wie kann ich jetzt die vom Formular erstellte Bitmap da anpassen, ich hab gedacht das geht mit
Delphi-Quellcode:
Da ja hier die größe des von mir erstellten Bitmaps verändert wird oder?
Bitmap.Height := Bitmap.Height * 7;
Bitmap.Width := Bitmap.Width * 8; Also hat da vielleicht jemand einen Ansatz wie das Problem behoben werden kann? mfg Borschti |
Re: Komplettes Formular ausdrucken?
![]() Aber was denkst du, was die Funktion vom Link nutzt? Richtig! StretchDraw :wink: |
Re: Komplettes Formular ausdrucken?
An dieser Stelle nochmal vielen Dank für deine Hilfe und die Geduld die du mit dir gebracht hast ;)
Also ich habe jetzt eine andere Lösung gefunden und zwar ein paar recht simple Rechnungen, hier mal meine Lösung falls es jemanden Interessiert bzw. mal jemand das gleiche Problem haben sollte:
Delphi-Quellcode:
Ich habe einfach das Blatt in gleiche große Teile aufgeteilt und hatte somit nichtmehr das Problem mit den Pixeln, je nach Form eures Formulars solltet ihr die Parameter verändern, sonst könnte euer Formular ziemlich verzehrt aussehn :roll:
Printer.Canvas.StretchDraw(Rect( 100, (PageHeight div 4)*(3 div 2), PageWidth - 100, (PageHeight div 4)*3 ), Bitmap);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz