2016-03-21 49 views
2

下面的图像显示的灰度馅饼,我想得出这样的使用Qt 5.5Qt的5.5拉伸填充馅饼

X从左到右增加 ý增加从上到下

我有一个启动角和其表示对弧的顶部和底部的端部的角度,我使用计算弧角:

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

(我们可以称之为查阅QRect没有过,看到documentation