[gelöst] [QT4] Bilder in fester Größe drucken

Alles rund um die Programmierung mit Qt
Antworten
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

[gelöst] [QT4] Bilder in fester Größe drucken

Beitrag von Esleborn »

hi,
ich hab ein kleines Problem mit dem Drucken per Qt... ich muss Bilder in einer festen Größe (cm Größe nicht pt Größe) drucken... was mir aber einfach nicht gelingen will... jemand ne Idee? [zB Cd Labels welche immer die größe x cm mal y cm haben....]

Elgrimm Esleborn
Zuletzt geändert von Esleborn am 15. Mai 2006 19:15, insgesamt 1-mal geändert.
Glaube an eine Lösung, nur dann kannst du auch eine finden.
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Das muste zuerst die Auflösung von dem Drucker erfragen. Dann kannst daraus denn errechen, wie groß das werden muss.
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

klingt in gewisses Weise logisch... wie mach ich letzteres?
Glaube an eine Lösung, nur dann kannst du auch eine finden.
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

naja ob es die optimale Lösung ist, aber irgendwie sowas funktioniert :):

Code: Alles auswählen

inline double ScaleFaktor ( double f_outputSizeInMm, double f_inputSizeInPt, int f_resolution )
{
// Größe des Endbildes in inches
   f_outputSizeInMm /= ( double ) 25.4;
// Breite des Endbildes in Punkten (res_x = res_y * 3/4
   f_outputSizeInMm *= f_resolution;

//   Faktor zur gewünschten Breite des Bildes:
   return f_outputSizeInMm / f_inputSizeInPt;
}


void Print ( const QString &f_imageFile, QSize, f_wishedSize, bool f_withSurroundingRect, QWidget *fp_parent )
{
//   Printer initialisieren
   QPrinter printer ( QPrinter::HighResolution );            //   Es wird eine höhere Qualität gewünscht...

   QPrintDialog *p_dlg = new QPrintDialog ( &printer, fp_parent );
   p_dlg->setWindowTitle ( tr ( "Drucken" ) );

   if ( p_dlg->exec ( ) != QDialog::Accepted )
      return;

// Das eigentliche drucken
   int res ( printer.resolution ( ) );

   QPainter painter ( &printer );
   QImage image ( f_imageFile );

   double ratioX ( ScaleFaktor ( f_wishedSize.width ( ), image.width ( ), res ) );
   double ratioY ( ScaleFaktor ( f_wishedSize.height ( ), image.height ( ), res ) );

   painter.scale ( ratioX, ratioY );
   painter.drawImage ( 0, 0, image );

   if ( f_withSurroundingRect )
      painter.drawRect ( 0, 0, image.width ( ), image.height ( ) );
}
Glaube an eine Lösung, nur dann kannst du auch eine finden.
Antworten