增加画笔粗细快捷键

This commit is contained in:
sonichy 2018-11-09 10:34:24 +08:00
parent 0875928894
commit b6e8b46cba
5 changed files with 37 additions and 21 deletions

BIN
HTYPaint

Binary file not shown.

View File

@ -12,7 +12,7 @@
ImageWidget::ImageWidget(QWidget *parent)
: QWidget(parent)
{
{
qApp->installEventFilter(this);
cundo=0;
labelFont = new QLabel;
@ -43,7 +43,7 @@ ImageWidget::~ImageWidget()
}
void ImageWidget::paintEvent(QPaintEvent *)
{
{
QPainter painter(this);
painter.drawImage(0,0,imgtemp);
resize(imgtemp.size());
@ -57,6 +57,8 @@ void ImageWidget::draw(QImage &img)
painter.setRenderHint(QPainter::Antialiasing, true);
switch(draw_type){
case POINT_DRAW:
pen.setCapStyle(Qt::RoundCap);
pen.setJoinStyle(Qt::RoundJoin);
painter.drawLine(startPnt,endPnt);
break;
case LINE_DRAW:
@ -115,6 +117,7 @@ void ImageWidget::draw(QImage &img)
painter.drawPolygon(points,7);
break;}
case RECT_DRAW:{
pen.setJoinStyle(Qt::MiterJoin);
if(boolFill){
painter.setBrush(brush);
}else{
@ -240,7 +243,7 @@ void ImageWidget::mouseMoveEvent(QMouseEvent *e)
void ImageWidget::mouseReleaseEvent(QMouseEvent *e)
{
Q_UNUSED(e);
Q_UNUSED(e);
//this->isPressed = false;
if (draw_type == MOVE_DRAW) {
imgtemp = image;
@ -399,8 +402,8 @@ void ImageWidget::selectAll()
}
void ImageWidget::delSelect()
{
draw_type = DEL_DRAW;
{
draw_type = DEL_DRAW;
draw(image);
imgtemp = image;
update();
@ -408,7 +411,7 @@ void ImageWidget::delSelect()
void ImageWidget::newfile()
{
QImage imgnew = QImage(800,600,QImage::Format_ARGB32);
QImage imgnew = QImage(800, 600, QImage::Format_ARGB32);
imgnew.fill(Qt::transparent);
imgtemp = imgnew;
image = imgnew;
@ -434,7 +437,7 @@ void ImageWidget::load(QString fileName)
}
void ImageWidget::save(QString path)
{
{
image.save(path,0,100);
}
@ -589,7 +592,7 @@ void ImageWidget::moveBottomDown()
}
void ImageWidget::moveImgbuf()
{
{
for(int i=9; i>0; i--){
imgbuf[i] = imgbuf[i-1];
//qDebug() << "imgbuf" << i << "=" << i-1;

View File

@ -34,7 +34,7 @@ public:
COLORPICKER_DRAW
} draw_type;
ImageWidget(QWidget *parent = 0);
~ImageWidget();
~ImageWidget();
QImage image,imgtemp,imgbuf[10],imgmove;
QPoint startPnt; //起点
QPoint endPnt; //终点
@ -42,7 +42,7 @@ public:
QBrush brush;
QString text;
QLabel *labelFont;
bool boolBorder,boolFill;
bool boolBorder,boolFill;
void load(QString fileName);
void save(QString path);
void setAngle(qreal rotateAngle);
@ -50,7 +50,7 @@ public:
void mirror(bool bh,bool bv);
void copy();
void paste();
void draw(QImage &img);
void draw(QImage &img);
void newsize(int width,int height);
void scale(int ratioW,int ratioH);
void moveImgbuf();
@ -81,7 +81,7 @@ public slots:
void undo();
void redo();
private slots:
private slots:
void moveUp();
void moveDown();
void moveLeft();

View File

@ -26,6 +26,7 @@
#include <QLabel>
#include <QMimeData>
#include <QTextBrowser>
#include <QShortcut>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
@ -121,6 +122,10 @@ MainWindow::MainWindow(QWidget *parent) :
connect(checkBorder, SIGNAL(stateChanged(int)), this, SLOT(checkBorderChanged(int)));
connect(checkFill, SIGNAL(stateChanged(int)), this, SLOT(checkFillChanged(int)));
connect(new QShortcut(QKeySequence(Qt::Key_Plus), this), SIGNAL(activated()), this, SLOT(addPenWidth()));
connect(new QShortcut(QKeySequence(Qt::Key_Equal), this), SIGNAL(activated()), this, SLOT(addPenWidth()));
connect(new QShortcut(QKeySequence(Qt::Key_Minus), this), SIGNAL(activated()), this, SLOT(reducePenWidth()));
QStringList Largs = QApplication::arguments();
qDebug() << Largs;
if (Largs.length()>1) {
@ -142,7 +147,7 @@ void MainWindow::resizeEvent(QResizeEvent *event)
void MainWindow::on_action_changelog_triggered()
{
QString s = "1.8\n(2018-05)\n修复:删除选区有虚线框,从右键打开方式无法打开文件。\n\n1.7\n(2017-11)\n颜色透明工具,取色后在边框色、填充色显示,超出边界清空鼠标位置信息。\n增加灰色背景,凸显绘图区域。\n优化代码。\n(2017-10)\n简化工具信号简化setCursor()。\n(2017-09)\n增加箭头工具。\n增加抗锯齿。\n\n1.6\n(2017-07)\n更新日志消息窗口写不下了,改成带滚动条的文本框。\n自定义信号结合事件过滤器,把鼠标移动位置发送到主窗体信息栏。\n增加拖放打开文件。\n(2017-06)\n使用自定义信号解决子类发信息给主窗体状态栏问题致谢rekols。\n(2017-05)\n右键打开文件记忆文件路径。\n\n1.5 (2017-04)\n透明色反色不改变。\n增加取色工具,橡皮擦颜色不再固定为白色,而是填充色。\n\n1.4 (2017-03)\n支持命令行打开文件和打开方式打开文件。\n修复鼠标指针引用本地文件没引用资源文件引起启动path参数改变不能加载图标的问题。\n菜单的SIGNAL-SLOT改为on_action_triggered()\n修复PNG图片裁剪丢失透明度问题。\n新建图像为透明图像。\n\n1.3 (2017-03)\n实现选区模糊。\n加入模糊滤镜。\n\n1.2 (2017-02)\n文件名显示在窗口标题栏。\n区别保存和另存为。\n增加导入图片。\n\n1.1 (2017-01)\n新增灰度、反色。\n\n1.0 (2017-01)\n解决删除选区后画不出选框的问题。\n恢复撤销。\n增加全选。\n实现选区或剪贴板移动!\n保存时自动获取打开文件的路径。\n增加按像素、比例缩放。\n实现在属性窗口设置画布大小。\n2016-12\n增加快捷键控制选框及其边框移动。\n绘图代码从MainWindow向imageWidget迁移。\n实现水平镜像、垂直镜像。\n实现放大、缩小、原始大小。\n为了增加滚动条增加自定义imageWidget。\n状态栏显示绘图详情。\n复制选区到系统剪贴板,从系统剪贴板获取图像粘贴。\n优化颜色选择交互。\n增加撤销、重做功能有BUG。\n设为壁纸。\n画选区,剪裁选区。\n新建图片,打开图片,保存图片。\n实现画点、线、框、圆、字。";
QString s = "1.9\n(2018-11)\n增加:画笔粗细快捷键,画图更加方便。\n\n1.8\n(2018-05)\n修复:删除选区有虚线框,从右键打开方式无法打开文件。\n\n1.7\n(2017-11)\n颜色透明工具,取色后在边框色、填充色显示,超出边界清空鼠标位置信息。\n增加灰色背景,凸显绘图区域。\n优化代码。\n(2017-10)\n简化工具信号简化setCursor()。\n(2017-09)\n增加箭头工具。\n增加抗锯齿。\n\n1.6\n(2017-07)\n更新日志消息窗口写不下了,改成带滚动条的文本框。\n自定义信号结合事件过滤器,把鼠标移动位置发送到主窗体信息栏。\n增加拖放打开文件。\n(2017-06)\n使用自定义信号解决子类发信息给主窗体状态栏问题致谢rekols。\n(2017-05)\n右键打开文件记忆文件路径。\n\n1.5 (2017-04)\n透明色反色不改变。\n增加取色工具,橡皮擦颜色不再固定为白色,而是填充色。\n\n1.4 (2017-03)\n支持命令行打开文件和打开方式打开文件。\n修复鼠标指针引用本地文件没引用资源文件引起启动path参数改变不能加载图标的问题。\n菜单的SIGNAL-SLOT改为on_action_triggered()\n修复PNG图片裁剪丢失透明度问题。\n新建图像为透明图像。\n\n1.3 (2017-03)\n实现选区模糊。\n加入模糊滤镜。\n\n1.2 (2017-02)\n文件名显示在窗口标题栏。\n区别保存和另存为。\n增加导入图片。\n\n1.1 (2017-01)\n新增灰度、反色。\n\n1.0 (2017-01)\n解决删除选区后画不出选框的问题。\n恢复撤销。\n增加全选。\n实现选区或剪贴板移动!\n保存时自动获取打开文件的路径。\n增加按像素、比例缩放。\n实现在属性窗口设置画布大小。\n2016-12\n增加快捷键控制选框及其边框移动。\n绘图代码从MainWindow向imageWidget迁移。\n实现水平镜像、垂直镜像。\n实现放大、缩小、原始大小。\n为了增加滚动条增加自定义imageWidget。\n状态栏显示绘图详情。\n复制选区到系统剪贴板,从系统剪贴板获取图像粘贴。\n优化颜色选择交互。\n增加撤销、重做功能有BUG。\n设为壁纸。\n画选区,剪裁选区。\n新建图片,打开图片,保存图片。\n实现画点、线、框、圆、字。";
QDialog *dialog = new QDialog;
dialog->setWindowTitle("更新历史");
dialog->setFixedSize(400,300);
@ -172,7 +177,7 @@ void MainWindow::on_action_aboutQt_triggered()
void MainWindow::on_action_about_triggered()
{
QMessageBox aboutMB(QMessageBox::NoIcon, "关于", "海天鹰画图 1.8\n一款基于Qt的画图程序。\n作者:黄颖\nE-mail: sonichy@163.com\n主页:sonichy.96.lt\n参考文献:\n绘图:\nhttp://tzc.is-programmer.com/posts/534.html\nhttp://lizhigg.love.blog.163.com/blog/static/62611781201222105550184/\n滚动条http://down.51cto.com/data/233634\n灰度图http://www.cnblogs.com/xianglan/archive/2010/12/24/1915905.html\n拖放打开文件http://blog.csdn.net/rl529014/article/details/53057577");
QMessageBox aboutMB(QMessageBox::NoIcon, "关于", "海天鹰画图 1.9\n一款基于Qt的画图程序。\n作者:黄颖\nE-mail: sonichy@163.com\n主页:https://github.com/sonichy\n参考文献:\n绘图:\nhttp://tzc.is-programmer.com/posts/534.html\nhttp://lizhigg.love.blog.163.com/blog/static/62611781201222105550184/\n滚动条http://down.51cto.com/data/233634\n灰度图http://www.cnblogs.com/xianglan/archive/2010/12/24/1915905.html\n拖放打开文件http://blog.csdn.net/rl529014/article/details/53057577");
aboutMB.setIconPixmap(QPixmap(":/icon.png"));
aboutMB.exec();
}
@ -200,7 +205,6 @@ void MainWindow::setColorFill()
void MainWindow::spinValueChange(int i)
{
imageWidget->pen.setWidth(i);
imageWidget->pen.setJoinStyle(Qt::MiterJoin);
}
void MainWindow::textChange(QString s)
@ -263,11 +267,8 @@ void MainWindow::on_action_save_triggered(){
void MainWindow::on_action_saveas_triggered()
{
if(path==""){
path = QFileDialog::getSaveFileName(this,"保存图片","./未命名.jpg","图片文件(*.jpg *.png *.bmp)");
}else{
path = QFileDialog::getSaveFileName(this,"保存图片",path,"图片文件(*.jpg *.png *.bmp)");
}
if(path=="") path = "./未命名.jpg";
path = QFileDialog::getSaveFileName(this, "保存图片", path, "图片文件(*.jpg *.png *.bmp)");
if(path.length() != 0){
LSB1->setText("保存 " + path);
imageWidget->image = imageWidget->imgtemp;
@ -551,3 +552,13 @@ void MainWindow::setPicker(QColor color)
plt.setColor(QPalette::ButtonText, color);
btnColorFill->setPalette(plt);
}
void MainWindow::addPenWidth()
{
spinbox->setValue(spinbox->value() + 1);
}
void MainWindow::reducePenWidth()
{
spinbox->setValue(spinbox->value() - 1);
}

View File

@ -58,7 +58,7 @@ private slots:
void on_action_property_triggered();
void on_action_help_triggered();
void on_action_excude_triggered();
void on_action_gray_triggered();
void on_action_gray_triggered();
void on_action_invert_triggered();
void on_action_blur_triggered();
void on_action_transparent_triggered();
@ -79,6 +79,8 @@ private slots:
void checkFillChanged(int);
void open(QString);
void setPicker(QColor color);
void addPenWidth();
void reducePenWidth();
};
#endif // MAINWINDOW_H