| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- #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()<<ui->graphicsView->width()*0.5<<ui->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 ==== "<<fileDir;
- _mainPaintScene->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);
- }
|