首页 文章

在圆圈周围绘制彩色条带

提问于
浏览
0

我在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

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

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 回答

  • 1

    你的角度错了 .

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

    因此,如果你想在你的仪表上绘制一个20到50的圆弧:3点位置是0度 . 这意味着20位于相反位置= 180度 .

    => startAngle = 16 * 180 .

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

    => endAngle = -16 * 90 .

    没有太多的计算 . 当然不是atan2 .

相关问题