例子:重写widget的painterEvent

MainWindow.cpp

void Widget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setRenderHint(QPainter::RenderHint::HighQualityAntialiasing); QPen pen;
pen.setColor(QColor(170, 170, 90));
pen.setWidth(5);
pen.setStyle(Qt::SolidLine);
painter.setPen(pen); QBrush brush;
brush.setColor(QColor(120, 180, 200));
brush.setStyle(Qt::BrushStyle::SolidPattern);
painter.setBrush(brush); qreal radio = 100;
qreal deg = 3.1415926535797 / 180 * 72; QPoint points[5] = {//按照 1 3 5 2 4 的顺序就可以完成绘制,简单方法
QPoint(radio, 0),
QPoint(radio * qCos(deg), -radio * qSin(deg)),
QPoint(radio * qCos(deg * 2), -radio * qSin(deg * 2)),
QPoint(radio * qCos(deg * 3), -radio * qSin(deg * 3)),
QPoint(radio * qCos(deg * 4), -radio * qSin(deg * 4))
}; QPainterPath path;
path.moveTo(points[3]);
path.lineTo(points[1]);
path.lineTo(points[4]);
path.lineTo(points[2]);
path.lineTo(points[0]);
path.closeSubpath(); QFont font;
font.setPointSize(15);
font.setFamily("MiSans");
painter.setFont(font); path.addText(points[0], font, "0");
path.addText(points[1], font, "1");
path.addText(points[2], font, "2");
path.addText(points[3], font, "3");
path.addText(points[4], font, "4"); painter.save();//保存painter矩阵状态:旋转、缩放、平移
painter.translate(200, 200);//平移原点
painter.drawText(0, 0, "S1");
painter.drawPath(path); painter.restore(); painter.translate(200 + 200, 200);//平移原点
painter.rotate(90);//角度制,旋转
painter.scale(0.75, 0.75);
painter.drawText(0, 0, "S2");
painter.drawPath(path); painter.resetTransform();//恢复到未做旋转、缩放、平移的状态 painter.translate(200 + 200 + 200, 200);//平移原点
painter.scale(0.75, 0.75);
painter.drawText(0, 0, "S3");
painter.drawPath(path);
}

界面:

QT5笔记:33. 坐标系统和坐标变换的更多相关文章

  1. SVG中的坐标系统和坐标变换

    视野和世界 2D绘图中很多人会有一个误区,就是我绘图的区域是一个矩形区域.无论新建一个画布还是创建了一个容器,心里都想象里面有一个矩形区域.其实,在SVG当中,矩形区域只是视野,是我们看到的部分.实际 ...

  2. 2. svg学习笔记-svg中的坐标系统和viewbox

    我是通过<SVG精髓>这本书学习的svg,说实话,这本书写的不好,或者说翻译的不好,我没有看过这本书的原版,不知道原文写的怎么样,但是翻译出来的有些句子真的很拗口.以前老师给我们API文档 ...

  3. 理解SVG坐标系统和变换: transform属性

    SVG元素可以通过缩放,移动,倾斜和旋转来变换-类似HTML元素使用CSS transform来变换.然而,当涉及到坐标系时这些变换所产生的影响必然有一定差别.在这篇文章中我们讨论SVG的transf ...

  4. Android OpenGL ES(十二):三维坐标系及坐标变换初步 .

    OpenGL ES图形库最终的结果是在二维平面上显示3D物体(常称作模型Model)这是因为目前的打部分显示器还只能显示二维图形.但我们在构造3D模型时必须要有空间现象能力,所有对模型的描述还是使用三 ...

  5. [原创]java WEB学习笔记33:Session 案例 之 购物车

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  6. [OpenGL]OpenGL坐标系和坐标变换

    OpenGL通过摄像机的模拟.要实现一个三维计算机图形重大转变,这是几何变换(模型转换-查看转型(两者统称为几何变换)).投影.作物转型.口变换等.同一时候,OpenGL还实现了矩阵堆栈等.理解掌握了 ...

  7. unreal3的坐标系统和vector/rotator

    unreal3的坐标系有点奇葩,属于[z轴向上的左手坐标系]: 1.左手食指指前方,x正向 2.大拇指指上方,z正向 3.中指指右方,y正向 若以我们人头摆正时来参考: 1.目视的是前方,x正向 2. ...

  8. 理解SVG坐标系统和变换: 建立新视窗

    在SVG绘制的任何一个时刻,你可以通过嵌套<svg>或者使用例如<symbol>的元素来建立新的viewport和用户坐标系.在这篇文章中,我们将看一下我们如何这样做,以及这样 ...

  9. C语言实例解析精粹学习笔记——33(扑克牌的结构表示)

    实例33: 使用“结构”定义一副扑克牌,并对变量赋值,输出结果 思路: 扑克牌有4种花色,用枚举类型表示花色,其他都是结构体的简单应用 程序代码: #include <stdio.h> # ...

  10. Linux下汇编语言学习笔记33 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

随机推荐

  1. R数据分析:临床研究样本量计算、结果解读与实操

    很久之前给大家写过一篇文章详细介绍了样本量计算的底层逻辑,不过那篇文章原理是依照卡方比较来写的,可以拓展到均值比较,但视角还是比较小,今天从整个临床研究的角度结合具体的例子谈谈大家遇到的样本量的计算方 ...

  2. Alain 配置管理

    app/assets/tmp/app-data.json 中保存了默认的一些应用配置 app 应用配置 user 默认用户配置 menu 菜单配置信息 在 App.Module 中,使用 APP_IN ...

  3. 【C语言】【二级】将所指字符串中所有下标为奇数位置上的字母转换成大写

    题目 请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换成大写(若该位置上不是字母,则不转换). 例如,若输入" abc4EFG",则应输出&quo ...

  4. 解决docker 容器设置中文语言包出现的问题_docker

    https://www.anquanclub.cn/5821.html 这篇文章主要介绍了解决docker 容器设置中文语言包出现的问题,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 ...

  5. 【转载】 Locust 官方文档

    链接:https://www.jianshu.com/p/40102e9a24cb 安装 一般直接通过 pip 就可以安装: $ pip install locust 注意: Locust 1.x 版 ...

  6. Qt边推流边录制/实时性好延迟低/16路1080P推流加录制只占1%CPU/优化到极致

    一.前言 这个一边推流一边录制的功能,有很多用户提到过,之前因为时间的原因,一直没有搞,年初的时候索性抽空搞了下,也着实费了些功夫.推流用的是ffmpeg这个开源的牛逼的第三方库,搞音视频开发的人应该 ...

  7. Qt/C++地图雷达扫描/动态扇形区域/标记线实时移动/轮船货轮动态轨迹/雷达模拟/跟随地图缩放

    一.前言说明 地图雷达扫描的需求场景也不少,很多人的做法是直接搞个覆盖层widget,在widget上绘制雷达,优缺点很明显,优点是性能高,毕竟直接在widget上绘制性能明显比js中绘制要高,缺点是 ...

  8. Qt开发经验小技巧171-175

    在Qt编程中经常会遇到编码的问题,由于跨平台的考虑兼容各种系统,而windows系统默认是gbk或者gb2312编码,当然后期可能msvc编译器都支持utf8编码,所以在部分程序中传入中文目录文件名称 ...

  9. Qt编写可视化大屏电子看板系统20-横向分组图

    一.前言 横向分组图是柱状分组图的横向展示,有了横向柱状图加上分组图的绘制经验,这个做起来就比较简单了,横向的设置规则按照横向柱状图来,分组的规则按照柱状分组图的算法来,在横向的柱子中要绘制对应的值, ...

  10. [转]Microsoft Robotics Studio:微软仿真机器人集成开发环境,简称MSRS

    原文链接:Microsoft Robotics Studio 微软官网:Robotics: Simulating the World with Microsoft Robotics Studio 其它 ...