2016-03-21 22 views
2

下の画像は、グレーパイを示し、Iは、この使用のQtを描画したい5.5Qtの5.5ドロー充填パイ

X増加は、Yは、I、開始角度を有し、底

にトップを増加 を左から右へ円弧の頂部および底部に表し端角、Iは使用円弧角度を算出しています:

double dblArcAngle = fmod(mcfltElevMaxLimit - mcfltElevMinLimit + 180.0, 360.0) - 180.0; 

mcfltElevMaxLimit is 60 and mcfltElevMinLimit is -10 

drawPieへの呼び出しは次のようになります。

objOffscrPainter.drawPie(QRect(rctGeom.left() + mcintElevLeftMargin 
           ,rctGeom.top() + mcintElevBottomMargin 
           ,rctGeom.width() - mcintElevLeftMargin 
           ,rctGeom.height() - mcintElevBottomMargin) 
           ,mcfltElevMaxLimit * 16, dblArcAngle * 16); 

私は何を得るのパイがあるべき場所までのほぼ中間非常に小さいポリラインです。

(編集)、startAngleとspanAngleの両方のパラメータ2と3に16を掛ける必要があることを文書で読んでください。これは正しい方向ではなく、中心に塗りつぶされずに進行します。

(編集2)、以下の画像は私が得ている結果を示しています、私が通過している矩形は外側の矩形で軸を含みますが、パイはオフセットされていますか?

enter image description here

私は何を達成したいことは、白軸と画像を埋めるに合わせ左下に押し込めパイです。

通過した矩形が円の中心点を決定するのに使用されるようです。これが正しければ、矩形の中心を原点(左下)に調整し、サイズもディスプレイを満たすように調整する必要があります。

答えて

1

最初のパラメータQPainter::drawPieの矩形は、円弧を含む円の境界ボックスです。だから、あなたはこのような何かをしようと必要なものを描くために:

objOffscrPainter.drawPie(QRect(center.x() - r, center.y() - r, 2 * r, 2 * r) 
    ,16*mcfltElevMaxLimit, 16*dblArcAngle); 

centerあなたの円弧の中心です)

をあなたのケースでcenterQPoint(0, 0)ようですので、あなたは、このコードを使用することができます:

objOffscrPainter.drawPie(-r, -r, 2*r, 2*r, 16*mcfltElevMaxLimit, 16*dblArcAngle); 

(私たちはdocumentationを参照してください、あまりにもQRectせずにそれを呼び出すことができます)