如何使用Qt5.9绘制一个长尾五角星图案?

2026-04-19 01:022阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1031个文字,预计阅读时间需要5分钟。

如何使用Qt5.9绘制一个长尾五角星图案?

本文分享了Qt5.9绘制五角星的整体代码,供大家参考。整体内容如下:

今日记录一下绘制图形部分

程序比较简单,易于操作,为打下基础:

先说界面吧:

这里的图形位置跟随‘

具体步骤如下:

1. 创建一个窗口类,继承自QWidget。

2.在窗口类中重写paintEvent函数,用于绘制五角星。

3.使用QPainter类来绘制五角星。

4.在main函数中创建窗口对象,并显示窗口。

cpp

#include #include #include

class StarWidget : public QWidget {public: StarWidget(QWidget *parent=nullptr) : QWidget(parent) {}

如何使用Qt5.9绘制一个长尾五角星图案?

protected: void paintEvent(QPaintEvent *event) override { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing);

int size=100; // 五角星的大小 int x=(this->width() - size) / 2; int y=(this->height() - size) / 2;

// 绘制五角星 painter.beginPath(); painter.moveTo(x + size / 2, y); painter.lineTo(x + size, y + size * sqrt(3) / 2); painter.lineTo(x + size / 2, y + size * sqrt(3)); painter.lineTo(x, y + size * sqrt(3) / 2); painter.lineTo(x - size / 2, y); painter.lineTo(x - size, y + size * sqrt(3) / 2); painter.lineTo(x - size / 2, y + size * sqrt(3)); painter.lineTo(x, y + size * sqrt(3) / 2); painter.closePath();

painter.fillPath(); }};

int main(int argc, char *argv[]) { QApplication app(argc, argv); StarWidget window; window.show(); return app.exec();}

总结:

本文介绍了使用Qt5.9绘制五角星的整体代码,步骤简单,易于操作,适合初学者打下基础。

本文实例为大家分享了Qt5.9画五角星的具体代码,供大家参考,具体内容如下

今天记录一下画图部分的程序,比较简单,容易操作,为接下来打好基础:

先说界面吧:

里面的图位置跟图像学有点关系,多多理解一下:

对应的头文件:

#ifndef WIDGET_H #define WIDGET_H #include <QWidget> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT protected: void paintEvent(QPaintEvent *event); public: explicit Widget(QWidget *parent = nullptr); ~Widget(); private: Ui::Widget *ui; }; #endif // WIDGET_H

对应的cpp 文件:

#include "widget.h" #include "ui_widget.h" #include <QPainter> #include <iostream> #include<math.h> using namespace std; void Widget::paintEvent(QPaintEvent *event) { Q_UNUSED(event) QPainter painter(this);//创建QPainter对象 painter.setRenderHint(QPainter::Antialiasing);// painter.setRenderHint(QPainter::TextAntialiasing);// //生成五角星的5个顶点的,假设原点在五角星中心 qreal R = 100; //半径 //这里说明一下,qreal 在windows 下面是double 在嵌入式中是float类型。 const qreal Pi = 3.1415926; qreal deg = Pi * 72/180; QPoint points[5] = { QPoint(R,0), QPoint(R*cos(deg),-R*sin(deg)), QPoint(R*cos(2*deg),-R*sin(2*deg)), QPoint(R*cos(3*deg),-R*sin(3*deg)), QPoint(R*cos(4*deg),-R*sin(4*deg)), }; //设置字体 QFont font; font.setPointSize(12); font.setBold(true); painter.setFont(font); //设置画笔 QPen penLine; penLine.setWidth(2);//线宽 penLine.setColor(Qt::blue); //划线颜色 //Qt::NoPen,Qt::SolidLine, Qt::DashLine, Qt::DotLine,Qt::DashDotLine,Qt::DashDotDotLine,Qt::CustomDashLine penLine.setStyle(Qt::SolidLine);//线的类型,实线、虚线等 //Qt::FlatCap, Qt::SquareCap,Qt::RoundCap penLine.setCapStyle(Qt::FlatCap);//线端点样式 //Qt::MiterJoin,Qt::BevelJoin,Qt::RoundJoin,Qt::SvgMiterJoin penLine.setJoinStyle(Qt::BevelJoin);//线的连接点样式 painter.setPen(penLine); //设置画刷 QBrush brush; brush.setColor(Qt::yellow); //画刷颜色 brush.setStyle(Qt::SolidPattern); //画刷填充样式 painter.setBrush(brush); // //设计绘制五角星的PainterPath,以便重复使用 QPainterPath starPath; starPath.moveTo(points[0]); starPath.lineTo(points[2]); starPath.lineTo(points[4]); starPath.lineTo(points[1]); starPath.lineTo(points[3]); starPath.closeSubpath(); //闭合路径,最后一个点与第一个点相连 starPath.addText(points[0],font,"0"); //显示端点编号 starPath.addText(points[1],font,"1"); starPath.addText(points[2],font,"2"); starPath.addText(points[3],font,"3"); starPath.addText(points[4],font,"4"); //绘图 painter.save(); //保存坐标状态 painter.translate(100,120); painter.drawPath(starPath); //画星星 painter.drawText(0,0,"S1"); painter.restore(); //恢复坐标状态 painter.translate(300,120); //平移 painter.scale(0.8,0.8); //缩放 painter.rotate(90); //顺时针旋转 painter.drawPath(starPath);//画星星 painter.drawText(0,0,"S2"); painter.resetTransform(); //复位所有坐标变换 painter.translate(500,120); //平移 painter.rotate(-145); //逆时针旋转 painter.drawPath(starPath);//画星星 painter.drawText(0,0,"S3"); } Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); setPalette(QPalette(Qt::white)); //设置背景色是白色 setAutoFillBackground(true); //设置背景自动填充 resize(600,300); //固定大小 } Widget::~Widget() { delete ui; }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

本文共计1031个文字,预计阅读时间需要5分钟。

如何使用Qt5.9绘制一个长尾五角星图案?

本文分享了Qt5.9绘制五角星的整体代码,供大家参考。整体内容如下:

今日记录一下绘制图形部分

程序比较简单,易于操作,为打下基础:

先说界面吧:

这里的图形位置跟随‘

具体步骤如下:

1. 创建一个窗口类,继承自QWidget。

2.在窗口类中重写paintEvent函数,用于绘制五角星。

3.使用QPainter类来绘制五角星。

4.在main函数中创建窗口对象,并显示窗口。

cpp

#include #include #include

class StarWidget : public QWidget {public: StarWidget(QWidget *parent=nullptr) : QWidget(parent) {}

如何使用Qt5.9绘制一个长尾五角星图案?

protected: void paintEvent(QPaintEvent *event) override { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing);

int size=100; // 五角星的大小 int x=(this->width() - size) / 2; int y=(this->height() - size) / 2;

// 绘制五角星 painter.beginPath(); painter.moveTo(x + size / 2, y); painter.lineTo(x + size, y + size * sqrt(3) / 2); painter.lineTo(x + size / 2, y + size * sqrt(3)); painter.lineTo(x, y + size * sqrt(3) / 2); painter.lineTo(x - size / 2, y); painter.lineTo(x - size, y + size * sqrt(3) / 2); painter.lineTo(x - size / 2, y + size * sqrt(3)); painter.lineTo(x, y + size * sqrt(3) / 2); painter.closePath();

painter.fillPath(); }};

int main(int argc, char *argv[]) { QApplication app(argc, argv); StarWidget window; window.show(); return app.exec();}

总结:

本文介绍了使用Qt5.9绘制五角星的整体代码,步骤简单,易于操作,适合初学者打下基础。

本文实例为大家分享了Qt5.9画五角星的具体代码,供大家参考,具体内容如下

今天记录一下画图部分的程序,比较简单,容易操作,为接下来打好基础:

先说界面吧:

里面的图位置跟图像学有点关系,多多理解一下:

对应的头文件:

#ifndef WIDGET_H #define WIDGET_H #include <QWidget> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT protected: void paintEvent(QPaintEvent *event); public: explicit Widget(QWidget *parent = nullptr); ~Widget(); private: Ui::Widget *ui; }; #endif // WIDGET_H

对应的cpp 文件:

#include "widget.h" #include "ui_widget.h" #include <QPainter> #include <iostream> #include<math.h> using namespace std; void Widget::paintEvent(QPaintEvent *event) { Q_UNUSED(event) QPainter painter(this);//创建QPainter对象 painter.setRenderHint(QPainter::Antialiasing);// painter.setRenderHint(QPainter::TextAntialiasing);// //生成五角星的5个顶点的,假设原点在五角星中心 qreal R = 100; //半径 //这里说明一下,qreal 在windows 下面是double 在嵌入式中是float类型。 const qreal Pi = 3.1415926; qreal deg = Pi * 72/180; QPoint points[5] = { QPoint(R,0), QPoint(R*cos(deg),-R*sin(deg)), QPoint(R*cos(2*deg),-R*sin(2*deg)), QPoint(R*cos(3*deg),-R*sin(3*deg)), QPoint(R*cos(4*deg),-R*sin(4*deg)), }; //设置字体 QFont font; font.setPointSize(12); font.setBold(true); painter.setFont(font); //设置画笔 QPen penLine; penLine.setWidth(2);//线宽 penLine.setColor(Qt::blue); //划线颜色 //Qt::NoPen,Qt::SolidLine, Qt::DashLine, Qt::DotLine,Qt::DashDotLine,Qt::DashDotDotLine,Qt::CustomDashLine penLine.setStyle(Qt::SolidLine);//线的类型,实线、虚线等 //Qt::FlatCap, Qt::SquareCap,Qt::RoundCap penLine.setCapStyle(Qt::FlatCap);//线端点样式 //Qt::MiterJoin,Qt::BevelJoin,Qt::RoundJoin,Qt::SvgMiterJoin penLine.setJoinStyle(Qt::BevelJoin);//线的连接点样式 painter.setPen(penLine); //设置画刷 QBrush brush; brush.setColor(Qt::yellow); //画刷颜色 brush.setStyle(Qt::SolidPattern); //画刷填充样式 painter.setBrush(brush); // //设计绘制五角星的PainterPath,以便重复使用 QPainterPath starPath; starPath.moveTo(points[0]); starPath.lineTo(points[2]); starPath.lineTo(points[4]); starPath.lineTo(points[1]); starPath.lineTo(points[3]); starPath.closeSubpath(); //闭合路径,最后一个点与第一个点相连 starPath.addText(points[0],font,"0"); //显示端点编号 starPath.addText(points[1],font,"1"); starPath.addText(points[2],font,"2"); starPath.addText(points[3],font,"3"); starPath.addText(points[4],font,"4"); //绘图 painter.save(); //保存坐标状态 painter.translate(100,120); painter.drawPath(starPath); //画星星 painter.drawText(0,0,"S1"); painter.restore(); //恢复坐标状态 painter.translate(300,120); //平移 painter.scale(0.8,0.8); //缩放 painter.rotate(90); //顺时针旋转 painter.drawPath(starPath);//画星星 painter.drawText(0,0,"S2"); painter.resetTransform(); //复位所有坐标变换 painter.translate(500,120); //平移 painter.rotate(-145); //逆时针旋转 painter.drawPath(starPath);//画星星 painter.drawText(0,0,"S3"); } Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); setPalette(QPalette(Qt::white)); //设置背景色是白色 setAutoFillBackground(true); //设置背景自动填充 resize(600,300); //固定大小 } Widget::~Widget() { delete ui; }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。