在圆圈周围绘制彩色条带

时间:2015-05-06 20:31:02

标签: qt geometry

我在QT中重新创建这个量规,并且在彩色带部分出现问题。我希望能够从仪表上的任何位置(20到50之间)对乐队进行着色。

enter image description here

如果我使用drawarc函数,数学会令人困惑吗?

量规圆直径为300,所以我知道半径为150:

此仪表有101个可能的值,0到100,并且使用了270度

float totalRads = 2 * pi * 0.75; // total radians for 270 degrees
float valueRads = totalRads/101;
float startRads = (135 * 2 * pi) / 360.0; // start radian for "0" on gauge

barwidth是我想要彩色弧的宽度:

float startAngle = atan2(startpoint.x(), startpoint.y()); // ex 20 on gauge
float EndAngle = atan2(endpoint.x(), endpoint.y());       // ex 50 on gauge

painter.drawArc(barwidth, barwidth, 2 * (150 - barWidth), 2 * (150 - barWidth),
                       -angle1 * 16, angle2 * 16);

这不符合我的预期。

基本上它只是在完全出乎意料的圆圈区域画了一小段:

enter image description here

1 个答案:

答案 0 :(得分:1)

你的角度错了。

  

startAngle和spanAngle必须以1/16度指定,   即整圆等于5760(16 * 360)。积极的价值观   角度表示逆时针,而负值表示顺时针   方向。零度位于3点钟位置。

所以,如果你想在你的仪表上绘制一个20到50的圆弧: 3 o'时钟位置为0度。这意味着20位于相反位置= 180度。

  

=> startAngle = 16 * 180。

50从这个位置开始顺时针旋转90度。

  

=> endAngle = -16 * 90.

计算不算太多。当然不是atan2。