文本围绕一个圆形在其周边显示

最近需要做个文本围绕一个圆形的周边显示,文本也要旋转显示的。类似八卦图一样

如图

实现的效果如下

具体代码如下

void mtttt::paintEvent( QPaintEvent * )
{
	QPainter painter(this);

	painter.translate(width()/2,height()/2);


	QRectF rectangle(10.0, 10.0, 80.0, 80.0);
	int startAngle = 30 * 16;
	int spanAngle = 120 * 16;

	painter.setBrush(Qt::gray);

	painter.drawEllipse(QPoint(0,0),200,200);

	painter.save();
	int scunm = 15;   //控制显示个数
	int anglestep = 20;
	int anglestart = anglestep* (scunm-1)/2;
	painter.setBrush(Qt::darkCyan);

	QList<QColor> m_listcolor;
	m_listcolor << Qt::red << Qt::darkGreen <<Qt::blue;
	for (int i = 0; i < scunm; ++i)
	{
		QRect bottom(-25,200-50,50,50);
		painter.save();
		painter.rotate(-anglestep*(scunm-i-1));
		painter.drawPie(QRect(-200,-200,400,400),(-90-anglestart-anglestep/2)*16,(anglestep-1)*16);
	
		painter.restore();
	}

	for (int i = 0; i < scunm; ++i)
	{
		QRect bottom(-25,200-50,50,50);
		
		painter.save();
		painter.rotate(anglestart-i*anglestep);
		painter.drawText(bottom,Qt::AlignCenter,"Abb");
		
		painter.restore();
	}
	painter.restore();

	painter.save();
	painter.setBrush(Qt::green);
	painter.drawEllipse(QPoint(0,0),150,150);
	painter.restore();

}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值