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
[gelöst] [QT4] Bilder in fester Größe drucken
[gelöst] [QT4] Bilder in fester Größe drucken
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:
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.