我在QT中重新创建这个量规,并且在彩色带部分出现问题 . 我希望能够从仪表上的任何位置(20到50之间)对乐队进行着色 .
如果我使用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);
这不符合我的预期 .
基本上它只是在一个完全出乎意料的圆圈区域绘制了一小部分:
1 回答
你的角度错了 .
因此,如果你想在你的仪表上绘制一个20到50的圆弧:3点位置是0度 . 这意味着20位于相反位置= 180度 .
50从这个位置开始顺时针旋转90度 .
没有太多的计算 . 当然不是atan2 .