【qt】绘图

简介: 【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!


相关文章
|
编解码 图形学
29 QT - 绘图设备
29 QT - 绘图设备
43 0
|
存储 算法 数据可视化
Qt开发技术:Qt绘图系统(二)QPainter详解
Qt开发技术:Qt绘图系统(二)QPainter详解
Qt开发技术:Qt绘图系统(二)QPainter详解
|
存储 编解码 缓存
Qt开发技术:Qt绘图系统(一)绘图系统介绍
Qt开发技术:Qt绘图系统(一)绘图系统介绍
Qt开发技术:Qt绘图系统(一)绘图系统介绍
|
4月前
|
容器
【qt】GraphicsView绘图架构
【qt】GraphicsView绘图架构
72 0
|
2月前
(14)Qt绘图(one)
本文介绍了在Qt中使用QPainter进行绘图的基础操作,包括如何指定绘图设备、使用QPen和QBrush设置线条和填充样式、绘制不同样式的线条和形状,以及如何实现纹理填充和渐变填充等效果。
61 6
(14)Qt绘图(one)
|
2月前
|
计算机视觉
(15)Qt绘图(two)
Qt框架中QPainter类的多种绘图功能,包括坐标变换、基本图形绘制、文本和图片绘制、图像保存以及碰撞检测等。
45 1
(15)Qt绘图(two)
|
4月前
|
API
Qt绘图之Paint系统
Qt绘图之Paint系统
62 2
|
4月前
Qt绘图之QWidget
Qt绘图之QWidget
89 1
|
6月前
Qt绘图(线条、椭圆、矩形、图片滚动)
Qt绘图(线条、椭圆、矩形、图片滚动)
399 3
Qt 窗口常用位置API函数 & 绘图原理 & 双缓冲机制 总结
Qt 窗口常用位置API函数 & 绘图原理 & 双缓冲机制 总结