Hallo
Ich möchte auf verschiedenen Druckern eine annähernd gleich große Ausgabe haben.
Beim Tintenstrahler ist es OK
Beim Laser viel zu klein.
Es wird an der Druckerauflösung liegen!
Wie fange ich das in meinem Code ab?
Verschiedene Drucker = verschiedene Ausgabegrößen :-(
- steelbasic
- Beiträge: 63
- Registriert: 02.09.2004 19:41
- Wohnort: Niedersachsen
Verschiedene Drucker = verschiedene Ausgabegrößen :-(
Viele Grüße
Hein Blöd
Hein Blöd
Re: Verschiedene Drucker = verschiedene Ausgabegrößen :-(
Druckerauflösung vorher ermitteln und dann die Ausgabe dementsprechend anpassen?steelbasic hat geschrieben:Wie fange ich das in meinem Code ab?
Grüße ... Kiffi
a²+b²=mc²
- steelbasic
- Beiträge: 63
- Registriert: 02.09.2004 19:41
- Wohnort: Niedersachsen
Danke für die schnelle Antwort. Hast Du mal einen Tipp wie das geht?
Sorry, aber ich habe gerade ein Brett vorm Kopf
Wäre "PrinterPageWith()" und "PrinterPageHeight()" ein Ansatz?
Auf welchem Drucker gedruckt wird, weis ich im Vorfeld nicht. Es muß irgendwie automatisch angepasst werden.
Wenn noch jemand einen Tipp oder ein Codeschnipsel hätte ???
Sorry, aber ich habe gerade ein Brett vorm Kopf

Wäre "PrinterPageWith()" und "PrinterPageHeight()" ein Ansatz?
Auf welchem Drucker gedruckt wird, weis ich im Vorfeld nicht. Es muß irgendwie automatisch angepasst werden.
Wenn noch jemand einen Tipp oder ein Codeschnipsel hätte ???
Viele Grüße
Hein Blöd
Hein Blöd
http://www.purebasic.fr/german/viewtopi ... 886#183886steelbasic hat geschrieben:Danke für die schnelle Antwort. Hast Du mal einen Tipp wie das geht?
Grüße ... Kiffi
a²+b²=mc²
- steelbasic
- Beiträge: 63
- Registriert: 02.09.2004 19:41
- Wohnort: Niedersachsen
Vielen Dank für die Antwort und die Hilfe!
Ich berechne nun einfach den Faktor den die Ausgabe am Drucker im Verhältniss zum HP895 grösser werden muss. Den Faktor multipliziere ich mit den Ausgabedaten für den HP895. Kleinere Ausgaben also einen Faktor < 1 gibt es eigentlich nicht. Beides (<0>) funktioniert einwandfrei.
Etwas Bauchschmerzen habe ich wegen der Kommastellen die der Faktor hat. Aber es scheint keine negativen Auswirkungen zu haben.
Ich berechne nun einfach den Faktor den die Ausgabe am Drucker im Verhältniss zum HP895 grösser werden muss. Den Faktor multipliziere ich mit den Ausgabedaten für den HP895. Kleinere Ausgaben also einen Faktor < 1 gibt es eigentlich nicht. Beides (<0>) funktioniert einwandfrei.
Etwas Bauchschmerzen habe ich wegen der Kommastellen die der Faktor hat. Aber es scheint keine negativen Auswirkungen zu haben.
Code: Alles auswählen
If PrintRequester()
;.........................................................................................
;Ausgabegrösse beim Druck berechnen
DPI = PrinterPageWidth()
AF.f = DPI/2400 ;Ausgabefaktor im Bezug auf den HP895 (2400 Pixel) berechnen
;.........................................................................................
If StartPrinting("xxx")
LoadFont(20, "Courier New", 30 * AF.f)
LoadFont(21, "Courier New", 80 * AF.f)
If StartDrawing(PrinterOutput())
DrawingFont(FontID(21))
DrawText(400 * AF.f, 400 * AF.f, "Ausgabe Flächenausnutzung")
DrawingFont(FontID(20))
;--------------------------------------------------
If Druckausgabe = 1 ;Ronden I
DrawText(400 * AF.f, 600 * AF.f, "Ronden I")
Circle(600 * AF.f, 1000 * AF.f,100 * AF.f,RGB(147, 147, 147))
Viele Grüße
Hein Blöd
Hein Blöd
Soweit ich weiß, gibt es Drucker, die vertikal eine andere Auflösung haben als horizontal. Daher brauchst Du zwei Faktoren.
Und das ganze von Deinem Drucker abhängig zu machen ist irgendwie auch unschön, warum nicht einfach so:
Jetzt hast Du zwei Funktionen, denen Du einfach Zentimeterwerte geben kannst (ein A4-Blatt ist soweit ich mich erinnern kann 29.7x21 cm groß) und Du bekommst den passenden Pixelwert zurück.
Beispiel:
Und das ganze von Deinem Drucker abhängig zu machen ist irgendwie auch unschön, warum nicht einfach so:
Code: Alles auswählen
Global ppw
Global pph
ppw = PrinterPageWidth()
pph = PrinterPageHeight()
Procedure.f cmX(value.f)
ProcedureReturn value * (ppw / 21)
EndProcedure
Procedure.f cmY(value.f)
ProcedureReturn value * (pph / 29.7)
EndProcedure
Beispiel:
Code: Alles auswählen
Box(cmX(5), cmY(5), cmX(10.3), cmY(2))
-> zeichnet einen Kasten mit 10,3 cm Breite und 2 cm Höhe an Position (5/5)


ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.