• 1064阅读
  • 0回复

[讨论]Qt 绘制圆环,圆环外再绘制一个动态的椭圆。 [复制链接]

上一主题 下一主题
离线lwei24
 

只看楼主 倒序阅读 楼主  发表于: 2022-05-19
如题,各位大佬,如何在圆环外再设置一个动态的椭圆,这个椭圆自动随着这个圆转动。。。
  1. void RingWidget::paintEvent(QPaintEvent *event)
  2. {
  3.     Q_UNUSED(event);
  4.     QPainter painter(this);
  5.     painter.setRenderHint(QPainter::Antialiasing);
  6.     QRadialGradient gradient(0, 0, height()/2);
  7.     gradient.setColorAt(0, qRgb(3,139, 153));
  8.     gradient.setColorAt(1.0, qRgb(169, 238, 125));
  9.     painter.setBrush(gradient);
  10.     int m_persent = 90;//绘制的环的比例
  11.     int m_rotateAngle = 360*m_persent/100;
  12.     int side = qMin(width(), height());
  13.     QRectF ouRect(0, 0, side, side);//矩形长宽为窗口的长宽d
  14.     QRectF inRect(20, 20, side-40, side-40);
  15.     //画外圆
  16.     painter.setPen(Qt::NoPen);
  17.     //p.setBrush(QBrush(QColor(97, 117, 118)));
  18.     painter.drawEllipse(ouRect);
  19.     //画内圆
  20.     //p.setBrush(QBrush(QColor(255, 107, 107)));
  21.     painter.drawPie(ouRect, (90-m_rotateAngle)*16, m_rotateAngle*16);
  22.     //画遮罩,遮罩颜色为窗口颜色
  23.     painter.setBrush(palette().window().color());
  24.     painter.drawEllipse(inRect);
  25.     //画文字
  26.     QFont f = QFont("Microsoft YaHei", 15, QFont::Bold);
  27.     painter.setFont(f);
  28.     painter.setPen(Qt::white);
  29.     painter.drawText(inRect, Qt::AlignCenter, m_strDescribe);
  30. }

如上,以上是我绘制圆环的代码,怎么再这个圆环外再加一个动态的椭圆,这个椭圆的边框会自动围绕圆环进行转动。各位大佬,劳烦大家指点一下,小弟在此多谢了!
快速回复
限100 字节
 
上一个 下一个