• 8161阅读
  • 2回复

给出四个点,用QPainterPath画圆弧 [复制链接]

上一主题 下一主题
离线jiang_198586
 

只看楼主 倒序阅读 楼主  发表于: 2010-04-29
怎么用QPainterPath根据给出的四个点画圆弧呢?四个点为:圆弧外接矩形的左上角、右下角点,圆弧的起始点、圆弧的终结点;
用QPainterPath::arcTo ( const QRectF & rectangle, qreal startAngle, qreal sweepLength )的话怎么根据四个点求出startAngle,sweepLength
离线water_wf

只看该作者 1楼 发表于: 2010-04-29
哈哈,正好做过这个,便宜你了,研究好长时间啊
void drawArc(QPainter *painter,int lx,int ty,int rx,int by,int sx,int sy,int ex,int ey)
{
    if(painter == NULL)
        return;
    int cx = abs(lx + rx)/2;
    int cy = abs(ty + by)/2;
    float start = atan2(float(cy - sy),float(sx - cx));
    float end = atan2(float(cy - ey),float(ex - cx));
    start = start * 360 / (3.1415926 *2) *16;
    end = end * 360 /  (3.1415926 *2) *16;
    if(start < 0)
        start += 5760;
    if(end < 0){
        end += 5760;                
    }
    end -= start;
    if(end < 0){
        end += 5760;                
    }
    painter->drawArc(QRectF(lx,ty,rx - lx,by - ty),start,end);
}
离线water_wf

只看该作者 2楼 发表于: 2010-04-29
那些点一次对应
“”“”四个点为:圆弧外接矩形的左上角、右下角点,圆弧的起始点、圆弧的终结点;“”“”
快速回复
限100 字节
 
上一个 下一个