ImageEdit.cpp 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. #include "ImageEdit.h"
  2. #include "ui_ImageEdit.h"
  3. ImageEdit::ImageEdit(QWidget *parent) :
  4. QWidget(parent),
  5. ui(new Ui::ImageEdit)
  6. {
  7. ui->setupUi(this);
  8. //使用UI设计的Actions设计工具栏
  9. QToolBar* locToolBar = new QToolBar(tr("图片"),this); //创建工具栏
  10. locToolBar->addAction(ui->openAction);
  11. connect (ui->openAction,SIGNAL(triggered(bool)),this,SLOT(imageOpen()));
  12. locToolBar->addAction(ui->saveAction);
  13. connect (ui->saveAction,SIGNAL(triggered(bool)),this,SLOT(imageSave()));
  14. locToolBar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
  15. QVBoxLayout *Layout = new QVBoxLayout();//图片合成主界面垂直布局
  16. Layout->addWidget(locToolBar); //设置工具栏和编辑器上下布局
  17. _mainPaintScene =new MainPaintScene( ui->graphicsView);
  18. ui->graphicsView->setScene(_mainPaintScene);
  19. ui->graphicsView->centerOn(0,0);
  20. // qDebug()<<ui->graphicsView->width()*0.5<<ui->graphicsView->height()*0.5;
  21. connect(this, SIGNAL(changeCurrentShape(DrawBaseShape)),
  22. _mainPaintScene, SLOT(SetCurrentShape(DrawBaseShape)));
  23. initToolBar();
  24. }
  25. ImageEdit::~ImageEdit()
  26. {
  27. SafeDelete(_mainPaintScene);
  28. delete ui;
  29. }
  30. void ImageEdit::initToolBar()
  31. {
  32. ui->pbt_Green->hide();
  33. ui->pbt_Blue->hide();
  34. // ui->pbt_line->hide();
  35. ui->pbt_circle->hide();
  36. ui->pbt_triangle->hide();
  37. }
  38. void ImageEdit:: resizeEvent(QResizeEvent *event)
  39. {
  40. ui->graphicsView->resize(width() -ui->rightWgt->width() ,
  41. height());
  42. ui->graphicsView->move(0,0);
  43. ui->rightWgt->resize(ui->rightWgt->width(),height());
  44. ui->rightWgt->move(width()-ui->rightWgt->width(),0);
  45. // ui->control_bar->move( 0.5 *(width()-ui->rightWgt->width()- ui->control_bar->width())
  46. // ,height()-1.4* ui->control_bar->height());
  47. }
  48. //笔形绘制
  49. void ImageEdit::on_pushButton_clicked()
  50. {
  51. emit changeCurrentShape(DrawBaseShape::penPath);
  52. QPixmap pixmap(":/new/prefix1/images/ic_sidebar_pencil.png");
  53. //定义大小
  54. QSize picSize(8, 8);
  55. //缩放图片,按比例
  56. QPixmap scaledPixmap = pixmap.scaled(picSize, Qt::KeepAspectRatio);
  57. //设置样式
  58. QCursor cursor(scaledPixmap, -1, -1);
  59. //更改鼠标形状
  60. this->setCursor(cursor);
  61. }
  62. //文本绘制
  63. void ImageEdit::on_pushButton_2_clicked()
  64. {
  65. emit changeCurrentShape(DrawBaseShape::text);
  66. }
  67. //选择图元
  68. void ImageEdit::on_pushButton_4_clicked()
  69. {
  70. emit changeCurrentShape(DrawBaseShape::selection);
  71. }
  72. //图片
  73. void ImageEdit::on_pushButton_5_clicked()
  74. {
  75. QString fileDir = QFileDialog::getOpenFileName(this, tr("Open File"), ".", tr("Images (*.png *.xpm *.jpg)"));
  76. qDebug() << "file Dir ==== "<<fileDir;
  77. _mainPaintScene->InsertPicture(fileDir);
  78. emit changeCurrentShape(DrawBaseShape::image);
  79. }
  80. void ImageEdit::on_pushButton_9_clicked()
  81. {
  82. emit changeCurrentShape(DrawBaseShape::rotation);
  83. }
  84. void ImageEdit::on_pushButton_Color_clicked()
  85. {
  86. _mainPaintScene->setCurrentColor(QColor(255,88,80,255)); //红色
  87. }
  88. void ImageEdit::onSetColor(QColor color)
  89. {
  90. }
  91. void ImageEdit::on_pushButton_6_clicked()
  92. {
  93. initToolBar();
  94. ui->pbt_Green->show();
  95. ui->pbt_Blue->show();
  96. }
  97. void ImageEdit::on_pushButton_3_clicked()
  98. {
  99. emit changeCurrentShape(DrawBaseShape::arrowLine);
  100. }
  101. void ImageEdit::on_pushButton_8_clicked()
  102. {
  103. emit changeCurrentShape(DrawBaseShape::selection);
  104. }
  105. //void ImageEdit::on_pushButton_7_clicked()
  106. //{
  107. // emit changeCurrentShape(DrawBaseShape::line);
  108. //}
  109. void ImageEdit::on_pushButton_12_clicked()
  110. {
  111. initToolBar(); //将所有该隐藏的按钮隐藏;
  112. ui->pbt_line->show();
  113. }
  114. void ImageEdit::on_pushButton_13_clicked()
  115. {
  116. initToolBar(); //将所有该隐藏的按钮隐藏;
  117. ui->pbt_circle->show();
  118. ui->pbt_triangle->show();
  119. }
  120. void ImageEdit::on_pbt_line_clicked()
  121. {
  122. emit changeCurrentShape(DrawBaseShape::line);
  123. }
  124. void ImageEdit::on_pbt_Rect_clicked()
  125. {
  126. emit changeCurrentShape(DrawBaseShape::rectangle);
  127. }
  128. void ImageEdit::on_pbt_triangle_clicked()
  129. {
  130. emit changeCurrentShape(DrawBaseShape::triangle);
  131. }
  132. void ImageEdit::on_pbt_circle_clicked()
  133. {
  134. emit changeCurrentShape(DrawBaseShape::ellipse);
  135. }
  136. void ImageEdit::on_pbt_Blue_clicked()
  137. {
  138. _mainPaintScene->setCurrentColor(QColor(55,164,245,255)); //蓝色
  139. }
  140. void ImageEdit::on_pbt_Green_clicked()
  141. {
  142. _mainPaintScene->setCurrentColor(QColor(29,185,84,255)); //绿色
  143. }
  144. //void ImageEdit::on_pbt_prePage_clicked()
  145. //{
  146. // QString fileDir = QFileDialog::getOpenFileName(this, tr("Open File"), ".", tr("Images (*.png *.xpm *.jpg)"));
  147. // _mainPaintScene->SetBackGroundImage(fileDir);
  148. //}
  149. /**
  150. * @brief ImageEdit::imageSave 保存图片
  151. */
  152. void ImageEdit::imageSave()
  153. {
  154. QString filename1 = QFileDialog::getSaveFileName(this,tr("保存图片"),"",tr("Images (*.jpg)")); //选择路径
  155. QPixmap pixmap(_mainPaintScene->sceneRect().width(),1378);
  156. // QPixmap pixmap(_mainPaintScene->sceneRect().width(),_mainPaintScene->sceneRect().height());
  157. // QPixmap fitpixmap = pixmap.scaled(1083, 1378, Qt::KeepAspectRatio, Qt::SmoothTransformation); // 饱满填充
  158. pixmap.fill(Qt::white);
  159. qDebug()<<_mainPaintScene->sceneRect().width()<<_mainPaintScene->sceneRect().height();
  160. qDebug()<<_mainPaintScene->width()<<_mainPaintScene->height();
  161. QPainter painter(&pixmap);
  162. // QPainter painter(&image);
  163. _mainPaintScene->render(&painter); //关键函数
  164. pixmap.save(filename1, "JPG");
  165. }
  166. /**
  167. * @brief ImageEdit::imageopen 打开图片
  168. */
  169. void ImageEdit::imageOpen()
  170. {
  171. QString fileDir = QFileDialog::getOpenFileName(this, tr("Open File"), ".", tr("Images (*.png *.xpm *.jpg)"));
  172. _mainPaintScene->SetBackGroundImage(fileDir);
  173. }