Pieter from Belgium
28th August 2007, 10:00
In my application I print a pixmap, full page. Under Linux this works fine, but on Windows, only part of the pixmap is printed, with a high zoom-in level.
In attachment, both pdfs.
The printing code fragment:
QPixmap pixmapToPrint = window->GetImageGraphicsView()->PaintToPixmap();
QPainter painter(GetPrinter());
QSize size = pixmapToPrint->size();
QRect viewport = painter.viewport();
qDebug() << "pixmap size: " << size; // output: QSize(382,393)
qDebug() << "painter viewport: " << viewport; // output: QRect(0,0 4958x7016)
size.scale(viewport.size(), Qt::KeepAspectRatio);
painter.setViewport(viewport.x(),viewport.y(),size .width(),size.height());
painter.setWindow(pixmapToPrint->rect());
qDebug() << "corrected painter viewport: " << painter.viewport(); // output: QRect(0,0 4958x5100)
qDebug() << "corrected painter window: " << painter.window(); // output: QRect(0,0 382x393)
painter.drawPixmap(0,0,*pixmapToPrint);
In attachment, both pdfs.
The printing code fragment:
QPixmap pixmapToPrint = window->GetImageGraphicsView()->PaintToPixmap();
QPainter painter(GetPrinter());
QSize size = pixmapToPrint->size();
QRect viewport = painter.viewport();
qDebug() << "pixmap size: " << size; // output: QSize(382,393)
qDebug() << "painter viewport: " << viewport; // output: QRect(0,0 4958x7016)
size.scale(viewport.size(), Qt::KeepAspectRatio);
painter.setViewport(viewport.x(),viewport.y(),size .width(),size.height());
painter.setWindow(pixmapToPrint->rect());
qDebug() << "corrected painter viewport: " << painter.viewport(); // output: QRect(0,0 4958x5100)
qDebug() << "corrected painter window: " << painter.window(); // output: QRect(0,0 382x393)
painter.drawPixmap(0,0,*pixmapToPrint);