📄 drawarea.cpp
字号:
#include <QtGui>#include "drawarea.h"DrawArea::DrawArea(QWidget *parent) : QWidget(parent){ setAttribute(Qt::WA_StaticContents); modified = false; scribbling = false; myPenWidth = 2; myPenColor = Qt::blue;}void DrawArea::mousePressEvent(QMouseEvent *event){ if (event->button() == Qt::LeftButton) { lastPoint = event->pos(); scribbling = true; }}void DrawArea::mouseMoveEvent(QMouseEvent *event){ if ((event->buttons() & Qt::LeftButton) && scribbling) drawLineTo(event->pos());}void DrawArea::mouseReleaseEvent(QMouseEvent *event){ if (event->button() == Qt::LeftButton && scribbling) { drawLineTo(event->pos()); scribbling = false; }}void DrawArea::paintEvent(QPaintEvent * event ){ QPainter painter(this); painter.drawImage(QPoint(0, 0), image);}void DrawArea::resizeEvent(QResizeEvent *event){ if (width() > image.width() || height() > image.height()) { int newWidth = qMax(width() + 128, image.width()); int newHeight = qMax(height() + 128, image.height()); resizeImage(&image, QSize(newWidth, newHeight)); update(); } QWidget::resizeEvent(event);}void DrawArea::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 DrawArea::resizeImage(QImage *image, const QSize &newSize){ if (image->size() == newSize) return; QImage newImage(newSize, QImage::Format_RGB32); newImage.fill(qRgb(255, 255, 255)); QPainter painter(&newImage); painter.drawImage(QPoint(0, 0), *image); *image = newImage;}void DrawArea::clearImage(){ image.fill(qRgb(255, 255, 255)); modified = true; update();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -