Verschiedene Drucker = verschiedene Ausgabegrößen :-(

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
steelbasic
Beiträge: 63
Registriert: 02.09.2004 19:41
Wohnort: Niedersachsen

Verschiedene Drucker = verschiedene Ausgabegrößen :-(

Beitrag von steelbasic »

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?
Viele Grüße
Hein Blöd
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Verschiedene Drucker = verschiedene Ausgabegrößen :-(

Beitrag von Kiffi »

steelbasic hat geschrieben:Wie fange ich das in meinem Code ab?
Druckerauflösung vorher ermitteln und dann die Ausgabe dementsprechend anpassen?

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
steelbasic
Beiträge: 63
Registriert: 02.09.2004 19:41
Wohnort: Niedersachsen

Beitrag von steelbasic »

Danke für die schnelle Antwort. Hast Du mal einen Tipp wie das geht?

Sorry, aber ich habe gerade ein Brett vorm Kopf :oops:

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
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

steelbasic hat geschrieben:Danke für die schnelle Antwort. Hast Du mal einen Tipp wie das geht?
http://www.purebasic.fr/german/viewtopi ... 886#183886

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
steelbasic
Beiträge: 63
Registriert: 02.09.2004 19:41
Wohnort: Niedersachsen

Beitrag von steelbasic »

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.

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
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

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:

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
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:

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)
Bild     Bild

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