【问题标题】:drawing colored bands around circle在圆圈周围绘制彩色条带
【发布时间】:2015-05-06 20:31:02
【问题描述】:

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

这不像我预期的那样工作。

基本上它只是在完全意想不到的圆圈区域中画了一小段:

【问题讨论】:

    标签: qt geometry


    【解决方案1】:

    你弄错了角度。

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

    所以,如果你想在你的仪表上画一条从 20 到 50 的弧线: 3 点钟位置为 0 度。这意味着 20 在相反的位置 = 180 度。

    => 起始角度 = 16 * 180。

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

    => endAngle = -16 * 90。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 2017-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多