增加画笔粗细快捷键
This commit is contained in:
parent
0875928894
commit
b6e8b46cba
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue