下面的图片显示了灰色的馅饼,我想用Qt 5.5
绘制X从左向右增加 Y从上到下增加
我有一个起始角度和一个结束角度,表示弧的顶部和底部,我正在使用以下方法计算弧角:
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),更多进展,下面的图像现在显示我得到的结果,我传递的矩形是外部矩形并包括轴,但由于某种原因,饼是偏移的? / p>
我想要完成的是将馅饼塞入左下方,与白色轴对齐并填充图像。
看起来传递的矩形用于确定饼图的中心点。如果这是正确的,那么必须将矩形的中心调整为原点(左下角),并调整尺寸以填充显示。
答案 0 :(得分:1)
QPainter::drawPie
的第一个参数中的矩形是包含圆弧的圆的边界框。所以,要画出你需要的东西,试试这样的东西:
objOffscrPainter.drawPie(QRect(center.x() - r, center.y() - r, 2 * r, 2 * r)
,16*mcfltElevMaxLimit, 16*dblArcAngle);
(其中center
是弧的中心)
在您的情况下center
似乎是QPoint(0, 0)
,因此您可以使用此代码:
objOffscrPainter.drawPie(-r, -r, 2*r, 2*r, 16*mcfltElevMaxLimit, 16*dblArcAngle);
(我们也可以在没有QRect的情况下调用它,请参阅documentation)