【qt】绘图

一.画家

Qt里面用QPainter来绘图,我们可以形象的理解成一个画家!

二.绘图事件

QWidget里面,绘图的操作都在这个函数里面进行!
在这里插入图片描述

三.坐标体系

easyx一样,左上角为原点
在这里插入图片描述

四.画笔

画家有了,但是我们需要给他画笔,才能真正的可以画画!

1.setColor

设置画笔的颜色

2.setWidth

设置画笔的粗细

3.setStyle

在这里插入图片描述

4.setCapStyle

在这里插入图片描述

5.setJoinStyle

在这里插入图片描述

6.给画家配置笔

void Widget::paintEvent(QPaintEvent *event)
{
    
    QPainter painter(this);//画家
    
    painter.setRenderHint(QPainter::Antialiasing);//使画家画画更平滑
    painter.setRenderHint(QPainter::TextAntialiasing);//使画家写字更平滑
    
    QPen pen;//笔
    pen.setColor(Qt::red);
    pen.setWidth(4);
    pen.setStyle(Qt::SolidLine);
    pen.setCapStyle(Qt::FlatCap);
    pen.setJoinStyle(Qt::BevelJoin);
    
    painter.setPen(pen);//给画家设置笔
       
}

五.画刷

1.setColor

给刷子设置颜色

2.setStyle

在这里插入图片描述

3.给画家设置刷子

    QPainter painter(this);//画家
    QBrush brush;
    brush.setColor(Qt::blue);
    brush.setStyle(Qt::SolidPattern);
    painter.setBrush(brush);//给画家设置刷子

六.用到的类汇总

1.QRect 矩形

2.QPoint 点

3.QImage 图片

4.QPixmap 图片

5.QLine 线

6.QPainterPath 路径

七.开始画画★

1.矩形

     QPainter painter(this);//画家
     QPen pen;
     pen.setColor(Qt::red);
     pen.setWidth(4);

     painter.setPen(pen);
     QRect rect(200,150,400,300);//矩形,前两个参数是左上角坐标,后两个参数是矩形的宽和高
     painter.drawRect(rect);

运行结果:
在这里插入图片描述

2.画刷填充

     QPainter painter(this);//画家
     QPen pen;
     pen.setColor(Qt::red);
     pen.setWidth(4);
     QBrush brush;
     brush.setColor(Qt::green);
     brush.setStyle(Qt::SolidPattern);
     painter.setBrush(brush);
     painter.setPen(pen);
     QRect rect(200,150,400,300);//矩形,前两个参数是左上角坐标,后两个参数是矩形的宽和高
     painter.drawRect(rect);

运行结果:
在这里插入图片描述

3.圆角矩形

painter.drawRoundedRect(rect,20,20);//后面两个参数为水平半径和垂直半径

运行结果:
在这里插入图片描述

4.内接椭圆

painter.drawEllipse(rect);

运行结果:
在这里插入图片描述

5.圆弧

painter.drawArc(rect,0*16,90*16);//后面两个参数为度数

为什么要乘以16呢,因为qt里面将一度划分成了16份.
我们要想0到90°就需要乘以16,不然就是0~5°左右.
还有qt的0°是3点钟方向开始逆时针的方向.

运行结果:
在这里插入图片描述

6.弦

painter.drawChord(rect,0*16,-90*16);//可以负号改变方向

运行结果:
在这里插入图片描述

7.凸多边形

QPoint points[4]={{50,50},{100,200},{200,400},{20,300}};
painter.drawConvexPolygon(points,4);//第二个参数为几个点

运行结果:
在这里插入图片描述

8.多边形

QPoint points[4]={{50,50},{100,200},{200,400},{20,300}};
painter.drawPolygon(points,4);//第二个参数为几个点

与凸多边形一样,但是更全面!
运行结果:
在这里插入图片描述

9.image图片

     QImage image(":/bg.png");
     QRect rect(200,150,400,300);//矩形,前两个参数是左上角坐标,后两个参数是矩形的宽和高
     painter.drawImage(rect,image);//在矩形区域内显示可拉伸

运行结果:
在这里插入图片描述

10.pixmap图片

     QPixmap pixmap(":/bg.png");
     QRect rect(200,150,400,300);//矩形,前两个参数是左上角坐标,后两个参数是矩形的宽和高
     painter.drawPixmap(rect,pixmap);//在矩形区域内显示可拉伸

运行结果:
在这里插入图片描述

11.线

     QLine line(0,0,500,500);
     painter.drawLine(line);

在这里插入图片描述

12.多条线

     QVector<QLine>lines;
     lines.append(QLine(0,0,200,200));
     lines.append(QLine(200,200,500,100));
     painter.drawLines(lines);

运行结果:
在这里插入图片描述

13.点连线

QPoint point[3]={{0,0},{200,200},{500,100}};
     painter.drawPolyline(point,3);

运行结果:
在这里插入图片描述

14.路径

     QPainterPath path;
     QRect rect(200,150,400,300);
     path.addRect(rect);
     path.addEllipse(rect);
     painter.drawPath(path);

运行结果:
在这里插入图片描述

15.扇形

     QRect rect(200,150,400,300);
     painter.drawPie(rect,0,90*16);

运行结果:
在这里插入图片描述

16.点

     QPoint point(300,300);
     pen.setWidth(20);//设置大点,你们才能看见这个点
     painter.setPen(pen);
     painter.drawPoint(point);

运行结果:
在这里插入图片描述

17.多个点

QPoint points[4]={{50,50},{100,200},{200,400},{20,300}};
painter.drawPoints(points,4);

运行结果:
在这里插入图片描述

18.文本

     QFont font;
     font.setPixelSize(30);
     font.setFamily("微软雅黑");
     font.setBold(true);
     painter.setFont(font);//给画笔设置字体
     QRect rect(200,150,400,300);//矩形内显示字体
     painter.drawText(rect,"姚哥");

运行结果;
在这里插入图片描述

19.擦除

          QImage image(":/bg.png");
          QRect rect(200,150,400,300);//矩形,前两个参数是左上角坐标,后两个参数是矩形的宽和高
          painter.drawImage(rect,image);//在矩形区域内显示可拉伸

          QRect rect1(300,250,200,100);
          painter.eraseRect(rect1);

运行结果:
在这里插入图片描述
原理就是用背景色填充.

          this->setPalette(QPalette(Qt::green));//设置窗口背景色
          QImage image(":/bg.png");
          QRect rect(200,150,400,300);//矩形,前两个参数是左上角坐标,后两个参数是矩形的宽和高
          painter.drawImage(rect,image);//在矩形区域内显示可拉伸

          QRect rect1(300,250,200,100);
          painter.eraseRect(rect1);

运行结果:
在这里插入图片描述

20.填充矩形和路径

        QRect rect1(200,150,400,300);
        painter.fillRect(rect1,Qt::blue);

运行结果:
在这里插入图片描述

 QPainterPath path;
 QRect rect(200,150,400,300);
 path.addRect(rect);
 path.addEllipse(rect);
 painter.drawPath(path);
 painter.fillPath(path,Qt::green);

运行结果:
在这里插入图片描述

八.爽了

学会了绘图.就请想象你是一名画家,请尽情开始你的创制吧!
Show time!

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值