#include "ImageEdit.h" #include "ui_ImageEdit.h" ImageEdit::ImageEdit(QWidget *parent) : QWidget(parent), ui(new Ui::ImageEdit) { ui->setupUi(this); //使用UI设计的Actions设计工具栏 QToolBar* locToolBar = new QToolBar(tr("图片"),this); //创建工具栏 locToolBar->addAction(ui->openAction); connect (ui->openAction,SIGNAL(triggered(bool)),this,SLOT(imageOpen())); locToolBar->addAction(ui->saveAction); connect (ui->saveAction,SIGNAL(triggered(bool)),this,SLOT(imageSave())); locToolBar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); QVBoxLayout *Layout = new QVBoxLayout();//图片合成主界面垂直布局 Layout->addWidget(locToolBar); //设置工具栏和编辑器上下布局 _mainPaintScene =new MainPaintScene( ui->graphicsView); ui->graphicsView->setScene(_mainPaintScene); ui->graphicsView->centerOn(0,0); // qDebug()<graphicsView->width()*0.5<graphicsView->height()*0.5; connect(this, SIGNAL(changeCurrentShape(DrawBaseShape)), _mainPaintScene, SLOT(SetCurrentShape(DrawBaseShape))); initToolBar(); } ImageEdit::~ImageEdit() { SafeDelete(_mainPaintScene); delete ui; } void ImageEdit::initToolBar() { ui->pbt_Green->hide(); ui->pbt_Blue->hide(); // ui->pbt_line->hide(); ui->pbt_circle->hide(); ui->pbt_triangle->hide(); } void ImageEdit:: resizeEvent(QResizeEvent *event) { ui->graphicsView->resize(width() -ui->rightWgt->width() , height()); ui->graphicsView->move(0,0); ui->rightWgt->resize(ui->rightWgt->width(),height()); ui->rightWgt->move(width()-ui->rightWgt->width(),0); // ui->control_bar->move( 0.5 *(width()-ui->rightWgt->width()- ui->control_bar->width()) // ,height()-1.4* ui->control_bar->height()); } //笔形绘制 void ImageEdit::on_pushButton_clicked() { emit changeCurrentShape(DrawBaseShape::penPath); QPixmap pixmap(":/new/prefix1/images/ic_sidebar_pencil.png"); //定义大小 QSize picSize(8, 8); //缩放图片,按比例 QPixmap scaledPixmap = pixmap.scaled(picSize, Qt::KeepAspectRatio); //设置样式 QCursor cursor(scaledPixmap, -1, -1); //更改鼠标形状 this->setCursor(cursor); } //文本绘制 void ImageEdit::on_pushButton_2_clicked() { emit changeCurrentShape(DrawBaseShape::text); } //选择图元 void ImageEdit::on_pushButton_4_clicked() { emit changeCurrentShape(DrawBaseShape::selection); } //图片 void ImageEdit::on_pushButton_5_clicked() { QString fileDir = QFileDialog::getOpenFileName(this, tr("Open File"), ".", tr("Images (*.png *.xpm *.jpg)")); qDebug() << "file Dir ==== "<InsertPicture(fileDir); emit changeCurrentShape(DrawBaseShape::image); } void ImageEdit::on_pushButton_9_clicked() { emit changeCurrentShape(DrawBaseShape::rotation); } void ImageEdit::on_pushButton_Color_clicked() { _mainPaintScene->setCurrentColor(QColor(255,88,80,255)); //红色 } void ImageEdit::onSetColor(QColor color) { } void ImageEdit::on_pushButton_6_clicked() { initToolBar(); ui->pbt_Green->show(); ui->pbt_Blue->show(); } void ImageEdit::on_pushButton_3_clicked() { emit changeCurrentShape(DrawBaseShape::arrowLine); } void ImageEdit::on_pushButton_8_clicked() { emit changeCurrentShape(DrawBaseShape::selection); } //void ImageEdit::on_pushButton_7_clicked() //{ // emit changeCurrentShape(DrawBaseShape::line); //} void ImageEdit::on_pushButton_12_clicked() { initToolBar(); //将所有该隐藏的按钮隐藏; ui->pbt_line->show(); } void ImageEdit::on_pushButton_13_clicked() { initToolBar(); //将所有该隐藏的按钮隐藏; ui->pbt_circle->show(); ui->pbt_triangle->show(); } void ImageEdit::on_pbt_line_clicked() { emit changeCurrentShape(DrawBaseShape::line); } void ImageEdit::on_pbt_Rect_clicked() { emit changeCurrentShape(DrawBaseShape::rectangle); } void ImageEdit::on_pbt_triangle_clicked() { emit changeCurrentShape(DrawBaseShape::triangle); } void ImageEdit::on_pbt_circle_clicked() { emit changeCurrentShape(DrawBaseShape::ellipse); } void ImageEdit::on_pbt_Blue_clicked() { _mainPaintScene->setCurrentColor(QColor(55,164,245,255)); //蓝色 } void ImageEdit::on_pbt_Green_clicked() { _mainPaintScene->setCurrentColor(QColor(29,185,84,255)); //绿色 } //void ImageEdit::on_pbt_prePage_clicked() //{ // QString fileDir = QFileDialog::getOpenFileName(this, tr("Open File"), ".", tr("Images (*.png *.xpm *.jpg)")); // _mainPaintScene->SetBackGroundImage(fileDir); //} /** * @brief ImageEdit::imageSave 保存图片 */ void ImageEdit::imageSave() { QString filename1 = QFileDialog::getSaveFileName(this,tr("保存图片"),"",tr("Images (*.jpg)")); //选择路径 // QPixmap pixmap(_mainPaintScene->sceneRect().width(),1378); QPixmap pixmap(_mainPaintScene->sceneRect().width(),_mainPaintScene->sceneRect().height()); // QPixmap fitpixmap = pixmap.scaled(1083, 1378, Qt::KeepAspectRatio, Qt::SmoothTransformation); // 饱满填充 pixmap.fill(Qt::white); qDebug()<<_mainPaintScene->sceneRect().width()<<_mainPaintScene->sceneRect().height(); qDebug()<<_mainPaintScene->width()<<_mainPaintScene->height(); QPainter painter(&pixmap); // QPainter painter(&image); _mainPaintScene->render(&painter); //关键函数 pixmap.save(filename1, "JPG"); } /** * @brief ImageEdit::imageopen 打开图片 */ void ImageEdit::imageOpen() { QString fileDir = QFileDialog::getOpenFileName(this, tr("Open File"), ".", tr("Images (*.png *.xpm *.jpg)")); _mainPaintScene->SetBackGroundImage(fileDir); }