Qt第十六天’ 快来打我* 2022-04-04 03:07 271阅读 0赞 ## 坐标变换 ## **坐标平移 坐标旋转 坐标缩放 状态的保存和恢复** ## widget.h ## #ifndef WIDGET_H #define WIDGET_H #include <QWidget> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT protected: void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; public: explicit Widget(QWidget *parent = nullptr); ~Widget(); private: Ui::Widget *ui; }; #endif // WIDGET_H widget.cpp #include "widget.h" #include "ui_widget.h" #include<QPainter> #include<stdlib.h> #include<math.h> #include<iostream> Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); setPalette(QPalette(Qt::white)); setAutoFillBackground(true); resize(600,500);//初始化窗口大小 } Widget::~Widget() { delete ui; } void Widget::paintEvent(QPaintEvent *event) { QPainter painter(this); painter.setRenderHints(QPainter::Antialiasing|QPainter::TextAntialiasing);//抗锯齿 //生成五角星顶点坐标,假设原点在五角星中心 qreal R=100; const qreal Pi=3.1415; qreal deg=Pi*72/180; QPointF points[5]=//将点的坐标设为float型 { QPointF(R,0), //需要添加头文件#include<iostream>和#include<math.h> QPointF(R*std::cos(deg),-R*std::sin(deg)), QPointF(R*std::cos(2*deg),-R*std::sin(2*deg)), QPointF(R*std::cos(3*deg),-R*std::sin(3*deg)), QPointF(R*std::cos(4*deg),-R*std::sin(4*deg)) }; //设置字体 QFont font; font.setPointSize(12); font.setBold(true); painter.setFont(font); //设置画笔 QPen pen; pen.setWidth(2); pen.setColor(Qt::black); pen.setStyle(Qt::SolidLine); pen.setCapStyle(Qt::RoundCap); pen.setJoinStyle(Qt::RoundJoin); painter.setPen(pen); //设置画刷 QBrush brush; brush.setColor(Qt::red); brush.setStyle(Qt::Dense1Pattern); painter.setBrush(brush); //设计绘制五角星的PainterPath QPainterPath painterPath; painterPath.moveTo(points[0]); painterPath.lineTo(points[2]); painterPath.lineTo(points[4]); painterPath.lineTo(points[1]); painterPath.lineTo(points[3]); painterPath.closeSubpath();//闭合路径 //在顶点显示编号 painterPath.addText(points[0],font,"0"); painterPath.addText(points[1],font,"1"); painterPath.addText(points[2],font,"2"); painterPath.addText(points[3],font,"3"); painterPath.addText(points[4],font,"4"); //绘图 painter.save();//保存坐标 painter.translate(100,120);//平移 painter.drawPath(painterPath);//绘图 painter.drawText(0,0,"S1");//在现在的原点写字 //painter.restore();//恢复坐标状态 painter.resetTransform();//复位坐标变换 painter.translate(300,120);//平移 painter.scale(0.8,0.8);//缩小至0.8 painter.drawPath(painterPath); painter.drawText(0,0,"S2"); painter.resetTransform(); painter.translate(500,120); painter.rotate(180);//旋转 painter.drawPath(painterPath); painter.drawText(0,0,"S3"); /* for(int i=0;i<30;i++) { painter.rotate(3); painter.drawPath(painterPath); } */ } 运行结果 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoZVJvb2tpZTE_size_16_color_FFFFFF_t_70] [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoZVJvb2tpZTE_size_16_color_FFFFFF_t_70]: /images/20220404/df230a92403446b8bd8b368f24386a1e.png
相关 QT第六天 QComboBox和QPlainTextEdit的用法 QComboBox的使用 设计时属性设置 在界面上放置QComboBox组件后,双击组件,弹出列表项编 布满荆棘的人生/ 2022年04月12日 07:21/ 0 赞/ 315 阅读
相关 QT第十天 QFileSystemModel 使用QFileSystemModel作为数据模型,QTreeView,QListView和QTableView为主要组件 在Tree Bertha 。/ 2022年04月11日 11:42/ 0 赞/ 310 阅读
相关 Qt第十六天 QPainter基本绘图 只有最基本的画图 widget.h ifndef WIDGET_H define WIDGET_H 待我称王封你为后i/ 2022年04月08日 13:24/ 0 赞/ 235 阅读
相关 Qt第十五天 自定义对话框及其调用 QWDialogSize的创建 qwdialogsize.h ifndef QWDIALOGSIZE_H define QW 以你之姓@/ 2022年04月08日 12:41/ 0 赞/ 274 阅读
相关 Qt第十二天 QStandardItemModel的使用 实现功能: 打开一个文本文件,该文件为二维数据文件,通过字符串处理获取表头和各行各列数据,导入到QStandardItem Bertha 。/ 2022年04月08日 10:15/ 0 赞/ 391 阅读
相关 Qt第十一天 QStringListModel的使用 采用QStringListModel作为数据模型,QListView组件作为视图组件 演示了QStringListModel和 痛定思痛。/ 2022年04月08日 09:22/ 0 赞/ 251 阅读
相关 Qt第十八天 Graphics View绘图程序实例 \\可以创建矩形,椭圆,圆,三角形,梯形,直线,文字等基本图形项 每个图形项可以被选择,拖动,放缩,旋转 图形项的前置和后 逃离我推掉我的手/ 2022年04月04日 11:47/ 0 赞/ 356 阅读
相关 Qt第十七天 QGraphicsView程序基本结构和功能实现 mainwindow.h ifndef MAINWINDOW_H define MAINWINDOW_ 快来打我*/ 2022年04月04日 09:18/ 0 赞/ 293 阅读
相关 Qt第十六天’ 坐标变换 坐标平移 坐标旋转 坐标缩放 状态的保存和恢复 widget.h ifndef WIDGET_H define WIDGET 快来打我*/ 2022年04月04日 03:07/ 0 赞/ 272 阅读
相关 QT第二十六天 使用Qt制作的串口工具 工程文件加入一下代码 QT +=serialport ifndef WIDGET_H define WI 旧城等待,/ 2022年04月01日 09:51/ 0 赞/ 264 阅读
还没有评论,来说两句吧...