【Qt】QtエクスポートPDF、Android、Qtスクリーンショット機能実現
2198 ワード
一:Qt PDFエクスポート
ここで私は3つの画像(QPIxmap:スクリーンショット)を導出したpdfに描きました.そのうち1.2枚目の画像は1ページ目、3枚目の画像は2ページ目です.
コード:
2:AndroidとQtのスクリーンショット機能の実現を比較する:
Androidスクリーンショットは次のとおりです.
void android.view. View.draw(
Canvas canvas)
コード:
QTスクリーンショットは以下のとおりです.
QPixmap QPixmap::grabWidget ( QWidget *widget, const QRect & rectangle ) [static]
コード:
ここで私は3つの画像(QPIxmap:スクリーンショット)を導出したpdfに描きました.そのうち1.2枚目の画像は1ページ目、3枚目の画像は2ページ目です.
コード:
QPrinter printer_pixmap(QPrinter::HighResolution);
printer_pixmap.setPageSize(QPrinter::A4); // A4
printer_pixmap.setPrintRange(QPrinter::AllPages);
printer_pixmap.setOutputFormat(QPrinter::PdfFormat); // pdf
printer_pixmap.setOutputFileName(outfilepath); //
QPainter painter_pixmap;
painter_pixmap.begin(&printer_pixmap);
QRect rect = painter_pixmap.viewport();
int multiple = rect.width()/pixmap1.width();
painter_pixmap.scale(multiple*0.675, multiple*0.675); // ( ) pdf multiple-1
painter_pixmap.drawPixmap(120, 0, pixmap1); // 1
painter_pixmap.drawPixmap(120, 580, pixmap2);// 2
printer_pixmap.newPage(); //
painter_pixmap.drawPixmap(120, 0, pixmap3);// 3
painter_pixmap.end();
2:AndroidとQtのスクリーンショット機能の実現を比較する:
Androidスクリーンショットは次のとおりです.
void android.view. View.draw(
Canvas canvas)
コード:
// View ( )
public static void writeImage(File previewTempFile,View v){
try {
Bitmap bitmap = Bitmap.createBitmap(v.getWidth(), v.getHeight(),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
v.draw(canvas);
// Bitmap png
if(previewTempFile.exists())
previewTempFile.delete();
try{
previewTempFile.createNewFile();
} catch (IOException e){
e.printStackTrace();
}
FileOutputStream out = new FileOutputStream(previewTempFile);
bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
Log.e("done", "done");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
QTスクリーンショットは以下のとおりです.
QPixmap QPixmap::grabWidget ( QWidget *widget, const QRect & rectangle ) [static]
コード:
pixmap3 = QPixmap::grabWidget(Tab2,290,0,660,720);
pixmap3.save(bmppath3.append("_c.bmp"),"bmp");