QSL Karte im Massstab 14x11 cm erstellen und ausdrucken

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Gerhard
Beiträge: 37
Registriert: 29.09.2004 23:44
Wohnort: Zedtwitz

QSL Karte im Massstab 14x11 cm erstellen und ausdrucken

Beitrag von Gerhard »

Hallo,
kann mir jemand sagen, wie ich eine QSL-Karte (braucht man im Amateurfunk) im richtigen Massstab 14x11 cm erstellen kann,
sodass der Ausdruck dann auch wirklich mit 14x11 cm ausfällt?

Zum Beispiel lade ich mit LOADIMAGE ein x-beliebiges Motiv.
Das sollte dann mittels ResizeIMAGE genau in die Bemassung
14x11 cm gebracht werden, aber woher weiss ich, wieviele
Pixel ich für wieviel cm benötige?

Hmmm
Danke schon mal fürs lesen und beantworten.

Gruss
Gerhard
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8820
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Wenn du [c]PrintRequester()[/c] aufgerufen hast, enthalten die Befehle [c]PrinterPageWidth()[/c] und [c]PrinterPageHeight()[/c] die Breite und die Höhe der Druckseite in Pixel. Wenn du im [c]PrintRequester()[/c] DIN A4 eingestellt hast, dann musst du wissen, dass eine DIN A4-Seite die Größe 21x29.7 cm hat. Jetzt kannst du per einfachem Dreisatz errechnen wieviel Pixel einen Zentimeter darstellen.

Hier ein Beispiel, wo oben links auf ads Blatt eine schwarze Box gezeichnet wird, die die Kantenlänge 1 cm hat. Ich konnte das Programm nur leider nicht testen.

Code: Alles auswählen

If PrintRequester()
  
  ; Neuen Druckauftrag erstellen
  If StartPrinting("1 cm Box in schwarz")
    
    ; Größe des Blattes bestimmen
    PWidth.l = PrinterPageWidth()
    PHeight.l = PrinterPageHeight()
    
    ; Anzahl Pixel pro cm bestimmen
    PpCmWidth.f = PWidth / 29.7
    PpCmHeight.f = PHeight / 21.0
    
    ; Neue Seite beginnen
    NewPrinterPage()
    
    ; Auf Seite schreiben
    StartDrawing(PrinterOutput())
      Box(0, 0, PWidth, PHeight, $FFFFFF)
      Box(0, 0, PpCmWidth, PpCmHeight, $000000)
    StopDrawing()
    
    StopPrinting()
  EndIf
EndIf
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Vielleicht hilft diese Seite weiter
http://caad.arch.rwth-aachen.de/lehre/k ... pixel.html

Danach wurde 'Papiergröße_cm / 2,54 * DruckerDPI' gerechnet und gerundet.

Über die Richtigkeit kann ich nicht garantieren.

MfG Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
Gerhard
Beiträge: 37
Registriert: 29.09.2004 23:44
Wohnort: Zedtwitz

Beitrag von Gerhard »

Hallo NictheQuick und Falko,
ihr habt mir sehr ausführlich weitergeholfen. Damit
kann ich was anfangen. DANKE

Gruss
Gerhard
Antworten