void TreeCanvas::print(void) { QPrinter printer; if (QPrintDialog(&printer, this).exec() == QDialog::Accepted) { QMutexLocker locker(&mutex); BoundingBox bb = root->getBoundingBox(); QRect pageRect = printer.pageRect(); double newXScale = static_cast<double>(pageRect.width()) / (bb.right - bb.left + Layout::extent); double newYScale = static_cast<double>(pageRect.height()) / (root->getShape()->depth() * Layout::dist_y + 2*Layout::extent); double printScale = std::min(newXScale, newYScale)*100; if (printScale<1.0) printScale = 1.0; if (printScale > 400.0) printScale = 400.0; printScale = printScale / 100.0; QPainter painter(&printer); painter.setRenderHint(QPainter::Antialiasing); painter.scale(printScale,printScale); painter.translate(xtrans, 0); QRect clip(0,0,0,0); DrawingCursor dc(root, *na, curBest, painter, clip, showCopies); PreorderNodeVisitor<DrawingCursor>(dc).run(); } }
void plotWindow::print() { QPrinter printer; printer.setOrientation(QPrinter::Landscape); if (QPrintDialog(&printer).exec() == QDialog::Accepted) { QRectF sourceRect = plotdata.sceneRect(); QPainter painter(&printer); painter.setRenderHint(QPainter::Antialiasing); plotdata.render(&painter, QRectF(printer.pageRect()), sourceRect); } }
void GraphicsView::print() { QPrinter printer; if (QPrintDialog(&printer).exec() == QDialog::Accepted) { // printer自带的filedialog不能用, 原因未知, 所以手动加了一个 QString filename = QFileDialog::getSaveFileName(this,"filename",QString(),QString("pdf Files (*.pdf)")); printer.setOutputFileName(filename); QPainter painter(&printer); painter.setRenderHint(QPainter::Antialiasing); //开始打印 render(&painter); } }
void MainWindowImpl::printGame() { QPrinter printer(QPrinter::HighResolution); printer.setPageSize(QPrinter::A4); if (QPrintDialog(&printer).exec() == QDialog::Accepted) { QPainter painter(&printer); painter.setRenderHint(QPainter::Antialiasing); // arrggghhh! impl->gv->render( &painter, QRect(), QRect(QPoint(0,0),impl->gv->size()) ); // arrggghhh! impl->gv->render( &painter, QRect(), impl->gstate.scene()->sceneRect().toRect() ); impl->gv->render( &painter, QRect(), impl->gstate.board().pixmap().rect() ); // fixme: print properly when there's no background pixmap. // fixme: offer scale-to-page option, but also allow multi-page print // fixme: offer print scaling } }