下面的图片显示了灰色饼,我想用QT5.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),更多的进展,下面的图像现在显示了我正在获得的结果,我正在传递的矩形是外部矩形并包含轴,但由于某种原因,饼图被偏移了?

我想要完成的是把饼塞进左下角,与白色轴对齐,然后填充图像。
看起来,所传递的矩形用于确定饼饼的中心点。如果这是正确的,那么矩形的中心必须调整为原点(左下角),大小也必须调整以填充显示。
发布于 2016-03-21 13:55:09
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的情况下调用它,参见文档)
https://stackoverflow.com/questions/36130700
复制相似问题