Seite 1 von 1
[gelöst] [QT4] Bilder in fester Größe drucken
Verfasst: 4. Dezember 2005 13:38
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
Verfasst: 4. Dezember 2005 17:47
von BartSimpson
Das muste zuerst die Auflösung von dem Drucker erfragen. Dann kannst daraus denn errechen, wie groß das werden muss.
Verfasst: 5. Dezember 2005 15:26
von Esleborn
klingt in gewisses Weise logisch... wie mach ich letzteres?
Verfasst: 15. Mai 2006 19:15
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 ( ) );
}