本文整理汇总了C++中QPicture::save方法的典型用法代码示例。如果您正苦于以下问题:C++ QPicture::save方法的具体用法?C++ QPicture::save怎么用?C++ QPicture::save使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QPicture
的用法示例。
在下文中一共展示了QPicture::save方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main( int argc, char **argv )
{
QApplication a( argc, argv ); // QApplication required!
const char *fileName = "car.pic"; // default picture file name
if ( argc == 2 ) // use argument as file name
fileName = argv[1];
if ( !QFile::exists(fileName) ) {
QPicture pict; // our picture
QPainter paint; // our painter
paint.begin( &pict ); // begin painting onto picture
paintCar( &paint ); // paint!
paint.end(); // painting done
pict.save( fileName ); // save picture
QMessageBox::information(0, "Qt picture example", "Saved. Run me again!");
return 0;
} else {
PictureDisplay test( fileName ); // create picture display
a.setMainWidget( &test); // set main widget
test.setCaption("Qt Example - Picture");
test.show(); // show it
return a.exec(); // start event loop
}
}
示例2: toImage
bool QGraph::toImage(QString path){
if(!path.isEmpty() && path.endsWith(".svg")) {
QPicture pic;
QPainter p;
pintafunc(&pic);
pic.save(path, "svg");
} else if(!path.isEmpty() && path.endsWith(".png")) {
front.save(path, "PNG");
} else
return false;
return true;
}
示例3: saveSVGStyle
void FLReportViewer::saveSVGStyle()
{
if (report) {
QString fileName = QFileDialog::getSaveFileName("", tr("Fichero SVG (*.svg)"), this, tr("Guardar en SVG"),
tr("Guardar en SVG"));
if (fileName.isEmpty())
return;
if (!fileName.upper().contains(".SVG"))
fileName += ".svg";
if (QFile::exists(fileName)
&& QMessageBox::question(this, tr("Sobreescribir %1").arg(fileName),
tr("Ya existe un fichero llamado %1. ¿ Desea sobreescribirlo ?").arg(fileName),
tr("&Sí"), tr("&No"), QString::null, 0, 1))
return;
FLStylePainter::setSVGMode(true);
updateReport();
FLStylePainter::setSVGMode(false);
QStringList fileNames;
QString fname;
QPicture *page;
QSize psize;
for (int i = 0; i < report->pageCount(); ++i) {
fname = fileName + QString::number(i);
fileNames.append(fname);
page = report->getPageAt(i);
psize = report->pageDimensions();
page->setBoundingRect(QRect(QPoint(0, 0), psize));
page->save(fname, "svg");
}
FLStylePainter::normalizeSVGFile(fileName, fileNames);
updateReport();
}
}
示例4: on_divideButton_clicked
void MainWindow::on_divideButton_clicked()
{
cubeRow = ui->cubeRow->value();
cubeCol = ui->cubeCol->value();
if(cubeRow*cubeCol >= 4 && !filename.isEmpty() && image_origin.rows >= cubeRow*3 && image_origin.cols >= cubeCol*3)
{
//I. divide image
//1.prepare
//int largeSquare = (int)floor(sqrt(cubeNum));//get the largest square that can be made
//qDebug() << "largeSquare:" <<largeSquare;
float picRatio = (float)image_origin.rows / (float)image_origin.cols;//row行数col列数
//qDebug() << "picRatio:" <<picRatio;
float cubeRatio = (float)cubeRow / (float)cubeCol;
int scale, fixedCol, fixedRow;
if(picRatio >= cubeRatio)//row long
{
scale = image_origin.cols/(cubeCol*3);//img size devide cube's totol col
fixedRow = scale*cubeRow*3;//set the size corresponding cube's
fixedCol = scale*cubeCol*3;
}
else//col long
{
scale = image_origin.rows/(cubeRow*3);
fixedRow = scale*cubeRow*3;
fixedCol = scale*cubeCol*3;
}
int removeRows = image_origin.rows - fixedRow;
int removeCols = image_origin.cols - fixedCol;
//qDebug()<<"scale:"<<scale<<" row:"<<fixedRow<<" col:"<<fixedCol<<" Original resolution:"<<image_origin.rows<<image_origin.cols<<" remove:"<<removeRows<<removeCols;
int removeRows_top,removeRows_down,removeCols_left,removeCols_right;
if(removeRows%2 != 0)//the remove num of rows is not even number
{
//up need remove one more than down
removeRows_top = removeRows/2 + 1;
removeRows_down = removeRows/2;
}
else
removeRows_top = removeRows_down = removeRows/2;
if(removeCols%2 != 0)//the remove num of cols is not even number
{
//left need remove one more than right
removeCols_left = removeCols/2 + 1;
removeCols_right = removeCols/2;
}
else
removeCols_left = removeCols_right = removeCols/2;
//qDebug()<<"removeRow_fixed:"<<removeRows_top<<removeRows_down<<"removeCol_fixed:"<<removeCols_left<<removeCols_right;
cv::Mat fixedImage = image_origin(Rect(removeCols_left,removeRows_top,fixedCol,fixedRow));//改好大小的图片
//resize the image
cv::Size dsize = cv::Size(cubeCol*3,cubeRow*3);//Image resolution of the match cube ratio
//cv::Mat image_resize = fixedImage;
cv::resize(fixedImage, image_resize, dsize);
image_resize = changeRubixColor(image_resize);
cv::cvtColor(image_resize, image_resize, CV_BGR2RGB);
//image_resize---->this is what we want!!!!
QImage QimgResize = QImage((const unsigned char*)(image_resize.data),image_resize.cols,image_resize.rows, image_resize.cols*image_resize.channels(), QImage::Format_RGB888);
//qDebug() << "QimgResizeRect:" << QimgResize.rect();
ui->picLabel->clear();
imgScaled = QimgResize.scaled(ui->picLabel->size(),Qt::KeepAspectRatio);
//qDebug() << "imgScaledRect:" << imgScaled.rect();
ui->picLabel->setPixmap(QPixmap::fromImage(imgScaled));//image insert into label
/*--------------------------drawing grids----------------------------*/
QPicture picture;
QPainter painter;
QPen pen_thick,pen_thin;
pen_thick.setWidth(3);
pen_thick.setColor(Qt::gray);
pen_thin.setWidth(1);
pen_thin.setColor(Qt::gray);
painter.begin(&picture);
picture.setBoundingRect(imgScaled.rect()); //set the boundary of painting
//draw col line
painter.setPen(pen_thin);
for(int i = 0; i <= cubeCol*3; i++)
painter.drawLine(QLineF((float)imgScaled.rect().width()/cubeCol/3.0*i, 0, (float)imgScaled.rect().width()/cubeCol/3.0*i, imgScaled.rect().height()));
painter.setPen(pen_thick);
for(int i = 0; i <= cubeCol; i++)
painter.drawLine(QLineF((float)imgScaled.rect().width()/cubeCol*i, 0, (float)imgScaled.rect().width()/cubeCol*i, imgScaled.rect().height()));
//draw row line
painter.setPen(pen_thin);
for(int i = 0; i <= cubeRow*3; i++)
painter.drawLine(QLineF(0, (float)imgScaled.rect().height()/cubeRow/3.0*i, imgScaled.rect().width(), (float)imgScaled.rect().height()/cubeRow/3.0*i));
painter.setPen(pen_thick);
for(int i = 0; i <= cubeRow; i++)
painter.drawLine(QLineF(0, (float)imgScaled.rect().height()/cubeRow*i, imgScaled.rect().width(), (float)imgScaled.rect().height()/cubeRow*i));
painter.end();
picture.save("draw_record.pic");
ui->picLabelUp->setPicture(picture);
}
else if(cubeRow*cubeCol < 4)
{
int ret = QMessageBox::warning(this, "Warning", "The number of cubes is at least four!", QMessageBox::Abort);
//.........这里部分代码省略.........
示例5: on_chooseCube_editingFinished
void MainWindow::on_chooseCube_editingFinished()
{
ui->divideButton->clicked();
ui->picLabelRoi->clear();
int num_cube = ui->chooseCube->value();
if(num_cube > 0 && num_cube <= cubeRow * cubeCol)
{
//find cube in pic
int num_row = (num_cube - 1) / cubeCol;//start at 0
int num_col = (num_cube - 1) % cubeCol; // start at 0
//qDebug() << "row,col:" << num_row << num_col;
chooseCubeColor = image_resize(cv::Rect(num_col*3,num_row*3,3,3));//cube what we choose
// //painting roi
// float multiple = (float)imgScaled.width() / (float)image_resize.size().width;
// QPicture picture0;
// QPainter painter0;
// QPen pen_roi;
// pen_roi.setColor(Qt::red);
// pen_roi.setWidth(2);
// painter0.begin(&picture0);
// painter0.setPen(pen_roi);
// //painting red Roi
// painter0.drawRect(QRectF(num_col*3*multiple,num_row*3*multiple,3*multiple,3*multiple));
// //qDebug() << QRectF(num_col*3*multiple,num_row*3*multiple,3*multiple,3*multiple);
// painter0.end();
// picture0.save("draw_roi.pic");
// ui->picLabelRoi->setPicture(picture0);
//painting cube
QPicture picture;
QPainter painter;
QPen pen_cube;
pen_cube.setColor(Qt::black);
pen_cube.setWidth(2);
painter.begin(&picture);
painter.setPen(pen_cube);
QBrush brush(Qt::SolidPattern);
//painting choose cube
int block_size = 40;
for(int i = 0; i < 9; i++)
{
//qDebug() << "RGB:" << chooseCubeColor.at<Vec3b>(i/3,i%3).val[0]<<chooseCubeColor.at<Vec3b>(i/3,i%3).val[1]<<chooseCubeColor.at<Vec3b>(i/3,i%3).val[2];
brush.setColor(QColor(chooseCubeColor.at<Vec3b>(i/3,i%3).val[0],chooseCubeColor.at<Vec3b>(i/3,i%3).val[1],chooseCubeColor.at<Vec3b>(i/3,i%3).val[2]));//RGB 3 channels
painter.setBrush(brush);
painter.drawRoundRect(QRect(block_size*i%(block_size*3),block_size*(i/3),block_size,block_size));
}
painter.end();
picture.save("draw_cube.pic");
ui->showCubeChoose->setPicture(picture);
//store colors of cube
for(int i = 0; i < 9; i++)
{
QColor qcolor = QColor(chooseCubeColor.at<Vec3b>(i/3,i%3).val[0],chooseCubeColor.at<Vec3b>(i/3,i%3).val[1],chooseCubeColor.at<Vec3b>(i/3,i%3).val[2]);//RGB 3 channels
int color_num;
if(qcolor == colorTable_cube[0])
color_num = 0;
else if(qcolor == colorTable_cube[1])
color_num = 1;
else if(qcolor == colorTable_cube[2])
color_num = 2;
else if(qcolor == colorTable_cube[3])
color_num = 3;
else if(qcolor == colorTable_cube[4])
color_num = 4;
else if(qcolor == colorTable_cube[5])
color_num = 5;
else
color_num = -1;
col[i] = RubikColor(color_num);
//qDebug() << "color:" << color_num;
}
dlg.setRubikColor(col);
}
else
{
int ret = QMessageBox::warning(this, "Warning", "Please choose the cube you want to make!", QMessageBox::Abort);
if (ret == QMessageBox::Abort)
qDebug() << "WARNING!!";
}
}
示例6: actionExport_to_callback
void SvgCanvas::actionExport_to_callback()
{
QDialog dialog;
ExportToDialog export_to_dialog;
export_to_dialog.setupUi(&dialog);
QListWidget *list = export_to_dialog.formats_listWidget;
QListWidgetItem *item;
//Pixmaps formats
QList<QByteArray> formats=QImageWriter::supportedImageFormats();
for(int i=0;i<formats.size();i++)
{
QString text(formats[i]);
item=new QListWidgetItem(text,list);
item->setData(1,QVariant(PIXMAP));
}
//Vector formats
formats= QPicture::outputFormats();
for(int i=0;i<formats.size();i++)
{
QString text(formats[i]);
item=new QListWidgetItem(text,list);
item->setData(1,QVariant(PICTURE));
}
item=new QListWidgetItem("ps",list);
item->setData(1,QVariant(PRINTER));
item=new QListWidgetItem("pdf",list);
item->setData(1,QVariant(PDF));
item=new QListWidgetItem("svg",list);
item->setData(1,QVariant(SVG));
int ok=dialog.exec();
if(ok==QDialog::Rejected) return;
item =list->currentItem();
int format=item->data(1).toInt();
QPainter plot;
switch(format)
{
case PIXMAP:
{
bool ok;
int h, w = QInputDialog::getInteger(this, tr("Width"), tr("Width:"), 300, 0, 2147483647, 1, &ok);
if(!ok) return;
h=QInputDialog::getInteger(this, tr("Height"), tr("Height:"), 200, 0, 2147483647, 1, &ok);
if(!ok) return;
QString s = QFileDialog::getSaveFileName(this, "Choose a filename to save");
if(s.isEmpty()) return;
QImage image(w,h,QImage::Format_RGB32);
plot.begin(&image);
svg_plot->renderer()->render(&plot);
plot.end();
image.save(s,item->data(0).toString().toLocal8Bit().data());
}
break;
case PICTURE:
{
bool ok;
int h, w = QInputDialog::getInteger(this, tr("Width"), tr("Width:"), 300, 0, 2147483647, 1, &ok);
if(!ok) return;
h=QInputDialog::getInteger(this, tr("Height"), tr("Height:"), 200, 0, 2147483647, 1, &ok);
if(!ok) return;
QString s = QFileDialog::getSaveFileName(this, "Choose a filename to save");
if(s.isEmpty()) return;
QPicture image;
const QRect r(0,0,w,h);
image.setBoundingRect(r);
plot.begin(&image);
svg_plot->renderer()->render(&plot);
plot.end();
image.save(s,item->data(0).toString().toLocal8Bit().data());
}
break;
case PRINTER:
{
QPrinter p;
QPrintDialog printDialog(&p, this);
if (printDialog.exec() != QDialog::Accepted) return;
plot.begin(&p);
svg_plot->renderer()->render(&plot);
plot.end();
}
break;
case PDF:
{
QPrinter p;
QPrintDialog printDialog(&p, this);
p.setOutputFormat(QPrinter::PdfFormat);
if (printDialog.exec() != QDialog::Accepted) return;
plot.begin(&p);
svg_plot->renderer()->render(&plot);
plot.end();
}
break;
case SVG:
{
//.........这里部分代码省略.........
示例7: slotAccept
void Export::slotAccept()
{
switch ( group -> selectedId() )
{
case 0:
{
QString fn = QFileDialog::getSaveFileName( "projects/output/", "PNG sequence ( *.png )", this );
if ( !fn.isEmpty() )
{
if ( k_toon -> scenes() -> exportAnimation( fn, "PNG" ) > 0 )
k_toon -> statusBar() -> message( tr( "Animation Exported Successfully" ), 2000 );
else
k_toon -> statusBar() -> message( tr( "Could not Export Animation" ), 2000 );
}
break;
}
case 1:
{
QString fn = QFileDialog::getSaveFileName( "projects/output/", "Single PNG ( *.png )", this );
if ( !fn.isEmpty() )
{
QPixmap exp;
fn = fn + ".png";
exp.convertFromImage( k_toon -> renderCameraPreview() -> grabFrameBuffer() );
if ( !exp.save( fn, "PNG" ) )
k_toon -> statusBar() -> message( tr( "Could not save the file: %1" ).arg( fn ), 2000 );
}
break;
}
case 2:
{
QString fn = QFileDialog::getSaveFileName( "projects/output/", "Macromedia Flash ( *.swf )", this );
if ( !fn.isEmpty() )
{
int number_of_images = k_toon -> scenes() -> exportAnimation( fn, "JPEG" );
if ( number_of_images > 0 )
{
int frame_rate = k_toon -> currentStatus() -> currentFrameRate();
SWFMovie *movie = doMovie( 360, 280 );
movie -> setRate( ( float )frame_rate );
QStringList images;
for ( int i = 1; i < number_of_images; i++ )
{
QString iterator = QString::number( i );
iterator = iterator.rightJustify( 3, '0' );
images << QString( fn + iterator + ".jpg" );
}
SWFDisplayItem *frame = doAnimation( movie, images );
frame -> addColor( 255, 0, 0 );
if ( movie -> save( ( char * )( fn + ".swf" ).latin1() ) < 0 )
k_toon -> statusBar() -> message( tr( "Could not Export Animation" ), 2000 );
else
k_toon -> statusBar() -> message( tr( "Animation Exported Successfully" ), 2000 );
for ( int i = 1; i < number_of_images; i++ )
{
QString iterator = QString::number( i );
iterator = iterator.rightJustify( 3, '0' );
QFile::remove( fn + iterator + ".jpg" );
}
}
else
k_toon -> statusBar() -> message( tr( "Could not Export Animation" ), 2000 );
}
break;
}
case 3:
{
QString fn = QFileDialog::getSaveFileName( "projects/output/", "Scalable Vector Graphics ( *.svg )", this );
if ( !fn.isEmpty() )
{
QPixmap exp;
fn = fn + ".svg";
exp.convertFromImage( k_toon -> renderCameraPreview() -> grabFrameBuffer() );
QPainter painter;
QPicture picture;
painter.begin( &picture );
painter.drawPixmap( 0, 0, exp );
painter.end();
if ( picture.save( fn, "svg" ) )
k_toon -> statusBar() -> message( tr( "SVG Exported Successfully" ), 2000 );
else
k_toon -> statusBar() -> message( tr( "Could not Export SVG" ), 2000 );
}
break;
}
default: break;
}
close( true );
}
示例8: print
void Clamp::print() {
#if 1
QPrinter printer;
#else
QPrinter printer(QPrinter::HighResolution);
#if QT_VERSION < 0x040000
printer.setOutputToFile(true);
printer.setOutputFileName("/tmp/FI.ps");
printer.setColorMode(QPrinter::Color);
#else
printer.setOutputFileName("/tmp/FI.pdf");
#endif
#endif
QString docName = splot->title().text();
if (!docName.isEmpty()) {
docName.replace(QRegExp(QString::fromLatin1("\n")), tr(" -- "));
printer.setDocName(docName);
}
printer.setCreator("RTXI");
printer.setOrientation(QPrinter::Landscape);
#if QT_VERSION >= 0x040000
QPrintDialog dialog(&printer);
if ( dialog.exec() ) {
#else
if (printer.setup()) {
#endif
/*
RTXIPrintFilter filter;
if (printer.colorMode() == QPrinter::GrayScale) {
int options = QwtPlotPrintFilter::PrintAll;
filter.setOptions(options);
filter.color(QColor(29, 100, 141),
QwtPlotPrintFilter::CanvasBackground);
filter.color(Qt::white, QwtPlotPrintFilter::CurveSymbol);
}
*/
// splot->print(printer, filter);
QwtPlotRenderer *renderer = new QwtPlotRenderer;
renderer->renderTo(splot, printer);
}
}
void Clamp::exportSVG() {
QString fileName = "FI.svg";
std::cout<<"flag 0"<<std::endl;
#if QT_VERSION < 0x040000
std::cout<<"flag 1"<<std::endl;
#ifndef QT_NO_FILEDIALOG
std::cout<<"flag 2"<<std::endl;
fileName = QFileDialog::getSaveFileName("FI.svg", "SVG Documents (*.svg)", this);
#endif
std::cout<<"flag 3"<<std::endl;
if (!fileName.isEmpty()) {
// enable workaround for Qt3 misalignments
QwtPainter::setSVGMode(true);
QPicture picture;
QPainter p(&picture);
// splot->print(&p, QRect(0, 0, 800, 600));
QwtPlotRenderer *renderer = new QwtPlotRenderer;
renderer->renderTo(splot, p, QRect(0, 0, 800, 600));
p.end();
picture.save(fileName, "svg");
}
#elif QT_VERSION >= 0x040300
std::cout<<"flag 4"<<std::endl;
#ifdef QT_SVG_LIB
std::cout<<"flag 5"<<std::endl;
#ifndef QT_NO_FILEDIALOG
std::cout<<"flag 6"<<std::endl;
fileName = QFileDialog::getSaveFileName(this, "Export File Name",
QString(), "SVG Documents (*.svg)");
#endif
std::cout<<"flag 7"<<std::endl;
if ( !fileName.isEmpty() ) {
QSvgGenerator generator;
generator.setFileName(fileName);
generator.setSize(QSize(800, 600));
// splot->print(generator);
}
#endif
#endif
}