美文网首页Flutter
Qt 绘图——基本绘图

Qt 绘图——基本绘图

作者: 飞扬code | 来源:发表于2019-08-03 20:43 被阅读0次

Qt 中提供了强大的 2D 绘图系统,可以使用相同的 API 在屏幕和绘图设备上进行绘制,它主要基于QPainter、QPaintDevice 和 QPaintEngine 这三个类。

QPainter 用于执行绘图操作,其提供的 API 在 GUI 或 QImage、QOpenGLPaintDevice、QWidget 和QPaintDevice 显示图形(线、形状、渐变等)、文本和图像。
QPaintDevice 不直接绘制物理显示画面,而利用逻辑界面的中间媒介。例如,绘制矩形图形时,为了将对象绘制到 QWidget、QGLPixelBuffer、QImage、QPixmap、QPicture 等多种界面中间,必须使用 QPaintDevice。
QPaintEngine 提供了一些接口,可用于 QPainter 在不同的设备上进行绘制。

基本绘图

1、paintEvent(QPaintEvent *event)

实现该事件函数的重写

void Widget::paintEvent(QPaintEvent *event)
{
    绘图的实现代码
}
2、绘制文本
//绘制文本
QPainter painter(this);
// 设置画笔颜色
painter.setPen(QColor(0, 160, 230));
// 设置字体:微软雅黑、点大小50、斜体
QFont font;
font.setFamily("Microsoft YaHei");
font.setPointSize(50);//字号
font.setItalic(true);//斜体
painter.setFont(font);//设置字体
// 绘制文本
painter.drawText(rect(), Qt::AlignCenter, "哈哈");
3、绘制直线
//绘制直线
// 反走样,防止出现锯齿状线条 painter.setRenderHint(QPainter::Antialiasing, true);
// 设置画笔颜色
painter.setPen(QColor(0, 160, 230));
// 绘制直线 两个参数,起点坐标和重点坐标
//QPoint是点的值是int型,QPointF的值是float型
painter.drawLine(QPointF(0, height()), QPointF(width() / 2, height() / 2));
4、绘制矩形

//矩形
// 反走样 painter.setRenderHint(QPainter::Antialiasing, true);
// 设置画笔颜色、宽度
painter.setPen(QPen(QColor(0, 160, 230), 2));
// 设置画刷颜色
painter.setBrush(QColor(255, 160, 90));
//参数依次顺序为 x、y、w、h,是指区域从 x 为 50,y 为 50 的坐标点起,
//宽度为 160,高度为 100 的矩形
painter.drawRect(50, 50, 160, 100);


#####5、绘制弧形

//弧形
//画弧线时,角度被分成了十六分之一,就是说,如果要 30 度,就需是 30*16。
//它有起始角度和跨度,还有位置矩形,所以,要想画出自己想要的弧线,
//就需要大概估算出各个参数的预估值
// 矩形
QRectF rect(90.0, 90.0, 80.0, 90.0);
// 起始角度
int startAngle = 30 * 16;
// 跨越度数
int spanAngle = 120 * 16;
// 反走样
painter.setRenderHint(QPainter::Antialiasing, true);
// 设置画笔颜色、宽度
painter.setPen(QPen(QColor(0, 160, 230), 2));
// 绘制弧线
painter.drawArc(rect, startAngle, spanAngle);


#####6、绘制椭圆

//绘制椭圆
// 反走样 painter.setRenderHint(QPainter::Antialiasing, true);
// 设置画笔颜色、宽度
painter.setPen(QPen(QColor(0, 160, 230), 2));
// 绘制椭圆
painter.drawEllipse(QPointF(120, 60), 50, 20);
// 设置画刷颜色
painter.setBrush(QColor(255, 160, 90));
// 绘制圆
painter.drawEllipse(QPointF(120, 140), 40, 40);

//绘制椭圆和圆形,都是调用 drawEllipse() 接口,
//如果为椭圆的时候,后面两个参数不一样,圆形则相同。
//首先我们来看第一个参数 QPointF
//是指椭圆的中心点相对当前窗体 QPoint(0, 0) 点的位置,
//后面的参数指椭圆的 x 轴及 y 轴的半径。


#####7、绘制多边形

//多边形
//定义一个个坐标点的位置,这里有四个点,分别为:QPointF(30, 40)、QPointF(60, 150)、
//QPointF(150, 160)、 QPointF(220, 100),
//然后调用 drawPolygon() 将各个点连接起来,绘制为多边形。

// 反走样
painter.setRenderHint(QPainter::Antialiasing, true);
// 设置画笔颜色
painter.setPen(QColor(0, 160, 230));
// 各个点的坐标
static const QPointF points[4] = {QPointF(30, 40), QPointF(60, 150), QPointF(150, 160), QPointF(220, 100)};
// 绘制多边形
painter.drawPolygon(points, 4);


#####8、绘制图片

//绘制图片
//drawPixmap() 来绘制图片,我们可以指定图片绘制的区域 QRect,
//这里为整个界面的区域,当界面伸缩的时候,图片也会跟着伸缩。
// 反走样
painter.setRenderHint(QPainter::Antialiasing, true);
// 绘制图标
painter.drawPixmap(rect(), QPixmap(":/Images/logo"));

相关文章

  • Qt 绘图——基本绘图

    Qt 中提供了强大的 2D 绘图系统,可以使用相同的 API 在屏幕和绘图设备上进行绘制,它主要基于QPainte...

  • QT(绘图)

    绘图设备 QPixmap:针对屏幕进行优化了,和平台相关,不能对图片进行修改 QInage:和平台无关,可以对图片...

  • R|绘图-学习笔记(二)

    tags: 绘图 R的三大绘图系统 1. 基本绘图系统 (base plotting system) 绘图始于空白...

  • 2020-11-17用ggplot绘制脑图谱

    (1)安装包 (2)基本绘图 (3)高级绘图

  • R基础绘图

    逐步绘图 R内置的基本绘图包graohics绘图逻辑:打开一个绘图板,制定绘图区,逐步添加各种图形元素。以下为例:...

  • Qt 绘图转换

    转换 QTransform 用于指定坐标系的 2D 转换 - 平移、缩放、扭曲(剪切)、旋转或投影坐标系。绘制图形...

  • 24. QTableview界面设置--Apple的学习笔记

    一,前言 上一节是QT节点编程,DaVinci Developer中就有类似的绘图。而此工具中绘图不是自定义的,而...

  • MFC基础知识

    MFC+QT绘图控件[https://blog.csdn.net/czyt1988/article/details...

  • 成为Qt绘图高手,你需要掌握这些

    今天小豆君带大家来看看Qt的绘图知识。 1 物理坐标和逻辑坐标 在绘图中,离不开两个概念,物理坐标和逻辑坐标。 我...

  • 181127 R的绘图系统

    R的三大绘图系统 基本绘图系统 始于空白帆布 图+修饰/添加 = 执行函数 适合2D绘图 graphics包,pl...

网友评论

    本文标题:Qt 绘图——基本绘图

    本文链接:https://www.haomeiwen.com/subject/wejsdctx.html