QT繪製圓弧遇到缺失問題

這兩天在寫QT的時候,我想利用兩個圓相減的方式來繪製一個圓弧,主要代碼如下
void draw :: paintEvent(QPaintEvent *event){
//繪製圓弧
            int spanAngle = 360 / xL->length;
            int startAngle = (i - 1) * spanAngle ;

            int radius = 200; //大圓直徑
            int radius_Little = 170; //小圓直徑
            int circleLeftUp_x = 110; // 大圓矩形左上角x座標
            int circleLeftUp_y = 20; //大圓矩形左上角y座標
            //三個參數:rect表示弧線所在的矩形,startAngle起始角度,spanAngle跨越角度
            QPainterPath arcPath;
            arcPath.moveTo(radius / 2.0+circleLeftUp_x, radius / 2.0+circleLeftUp_y);
            QRectF rectArc(circleLeftUp_x , circleLeftUp_y,radius, radius); //x,y,w,h,
            arcPath.arcTo(rectArc, startAngle, spanAngle);

            
QPainterPath subPath;
            subPath.moveTo(radius / 2.0+circleLeftUp_x, radius / 2.0+circleLeftUp_y);
            QRectF rectArcLittle(circleLeftUp_x + (radius - radius_Little) /2.0 ,circleLeftUp_y+ (radius - radius_Little) /2.0 , radius_Little, radius_Little); //x,y,w,h,
            subPath.arcTo(rectArcLittle, startAngle, spanAngle);
            //subPath.addEllipse(rectArc.adjusted(radius - radius_Little  , radius - radius_Little , radius_Little - radius, radius_Little -radius));

//arcPath爲大圓 subPath爲小圓 arcPath -= subPath; arcPath.addText(arcPath.pointAtPercent(0.1), font, QStringLiteral("玩家")+QString::number(p->data, 10));}

重點問題在subPath,也就是小圓的定義上,現在我們把小圓的定義方式換一下,換成下面我註釋掉的那句,也就是從上面的大圓變化而來,並且是橢圓的路徑(說是橢圓,其實還是圓,因爲長軸和短軸長度相等),改動後的代碼如下


QPainterPath subPath;
            subPath.moveTo(radius / 2.0+circleLeftUp_x, radius / 2.0+circleLeftUp_y);
            //QRectF rectArcLittle(circleLeftUp_x + (radius - radius_Little) /2.0 ,circleLeftUp_y+ (radius - radius_Little) /2.0 , radius_Little, radius_Little); //x,y,w,h,
            //subPath.arcTo(rectArcLittle, startAngle, spanAngle);
            subPath.addEllipse(rectArc.adjusted(radius - radius_Little  , radius - radius_Little , radius_Little - radius, radius_Little -radius));

下面我們再看看效果


事實上到底是什麼原因導致這個問題我並不知道,這個問題太詭異了。

項目的其他部分源碼如有需要,可留言
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章