Qt绘制五角星

这篇具有很好参考价值的文章主要介绍了Qt绘制五角星。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Qt绘制五角星文章来源地址https://www.toymoban.com/news/detail-495737.html

利用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绘制五角星的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包