利用Qt中的paintEvent事件绘制五角星
class DrawStar : public QWidget
{
Q_OBJECT
public:
explicit DrawStar(QWidget* parent = nullptr);
protected:
void paintEvent(QPaintEvent* pEvent);
private:
void initData();
private:
QPoint m_starData[5];
};
DrawStar::DrawStar(QWidget* parent)
: QWidget(parent)
{
this->initData();
update();
}
void DrawStar::initData()
{
qreal deg = ((360 / 5) * 3.1415926) / 180;
qreal r = 100;
m_starData[0] = QPoint(r, 0);
m_starData[1] = QPoint(r * qCos(deg), -r * qSin(deg));
m_starData[2] = QPoint(r * qCos(2 * deg), -r * qSin(2 * deg));
m_starData[3] = QPoint(r * qCos(3 * deg), -r * qSin(3 * deg));
m_starData[4] = QPoint(r * qCos(4 * deg), -r * qSin(4 * deg));
}
void DrawStar::paintEvent(QPaintEvent* pEvent)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(Qt::black);
painter.setBrush(QBrush(Qt::yellow));
QPainterPath paintPath;
paintPath.moveTo(m_starData[3]);
paintPath.lineTo(m_starData[1]);
paintPath.lineTo(m_starData[4]);
paintPath.lineTo(m_starData[2]);
paintPath.lineTo(m_starData[0]);
paintPath.closeSubpath();
painter.translate(100, 100);
QFont font;
font.setPointSizeF(12);
paintPath.addText(m_starData[0], font, "0");
paintPath.addText(m_starData[1], font, "1");
paintPath.addText(m_starData[2], font, "2");
paintPath.addText(m_starData[3], font, "3");
paintPath.addText(m_starData[4], font, "4");
painter.setFont(font);
painter.drawPath(paintPath);
}
Qt绘制五角星
于 2023-06-21 15:14:34 首次发布
该代码示例展示了如何在Qt环境中重写paintEvent函数,用以绘制一个五角星。首先定义了QPoint数组m_starData来存储五角星的顶点坐标,然后在paintEvent中使用QPainter进行绘制,包括设置抗锯齿效果、画笔颜色、填充刷子颜色,并将五角星的顶点连接成路径,最后在五角星各顶点添加编号。
摘要由CSDN通过智能技术生成