⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 paint.cpp

📁 une tres bonne fenetre
💻 CPP
字号:
#include "paint.h"
#include <QtGui>



paint::paint(int w,int h,QString fichier,QColor coleur,QWidget *parent)    : QWidget(parent)
 {
	 
	 setAttribute(Qt::WA_StaticContents);
	 
	// openImage("tmp.png");
	 setPenColor(coleur);
	 setFixedSize(w,h);

	 
	 modified = false;
     scribbling = false;
     myPenWidth = 1;
    

	
}

 bool paint::openImage(const QString &fileName)
 {
     QImage loadedImage;
     if (!loadedImage.load(fileName))
         return false;

     QSize newSize = loadedImage.size().expandedTo(size());
     resizeImage(&loadedImage, newSize);
     image = loadedImage;
     modified = false;
     update();
     return true;
 }

 bool paint::saveImage(const QString &fileName)
 {
     QImage visibleImage = image;
     resizeImage(&visibleImage, size());

     if (visibleImage.save(fileName)) {
         modified = false;
         return true;
     } else {
         return false;
     }
 }
 void paint::setPenColor(const QColor &newColor)
 {
     myPenColor = newColor;
 }

 void paint::setPenWidth(int newWidth)
 {
     myPenWidth = newWidth;
 }

 void paint::mousePressEvent(QMouseEvent *event)
 {
     if (event->button() == Qt::LeftButton) {
         lastPoint = event->pos();
         scribbling = true;
     }
 }

 void paint::mouseMoveEvent(QMouseEvent *event)
 {
     if ((event->buttons() & Qt::LeftButton) && scribbling)
         drawLineTo(event->pos());
 }

 void paint::mouseReleaseEvent(QMouseEvent *event)
 {
     if (event->button() == Qt::LeftButton && scribbling) {
         drawLineTo(event->pos());
         scribbling = false;
     }
 }

 void paint::paintEvent(QPaintEvent * /* event */)
 {
     QPainter painter(this);
     painter.drawImage(QPoint(0, 0), image);
 }

 void paint::resizeEvent(QResizeEvent *event)
 {
     if (width() > image.width() || height() > image.height()) 
	 {
         int newWidth = image.width();
         int newHeight = image.height();
         resizeImage(&image, QSize(newWidth, newHeight));
         update();
     }
     QWidget::resizeEvent(event);
 }

 void paint::drawLineTo(const QPoint &endPoint)
 {
     QPainter painter(&image);
     painter.setPen(QPen(myPenColor, myPenWidth, Qt::SolidLine, Qt::RoundCap,Qt::RoundJoin));
     painter.drawLine(lastPoint, endPoint);
     modified = true;

     int rad = (myPenWidth / 2) + 2;
     update(QRect(lastPoint, endPoint).normalized().adjusted(-rad, -rad, +rad, +rad));
     lastPoint = endPoint;
 }

 void paint::resizeImage(QImage *image, const QSize &newSize)
 {
     if (image->size() == newSize)
         return;

     QImage newImage(newSize, QImage::Format_RGB32);
    // newImage.fill(qRgb(255, 0, 0));
     QPainter painter(&newImage);
     painter.drawImage(QPoint(0, 0), *image);
     *image = newImage;
 }

 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -