码迷,mamicode.com
首页 > 其他好文 > 详细

Qt的paint函数重写,以及QPaint给一条线绘制箭头

时间:2018-02-06 22:57:53      阅读:563      评论:0      收藏:0      [点我收藏+]

标签:compare   size   bsp   line   cap   detail   epo   net   static   

直接代码:

 

    QPainter *painter;
    static const double Pi = 3.14159265358979323846264338327950288419717;
    static double TwoPi = 2.0 * Pi;
    
    QLineF line(sourcePoint,destPoint);
    if (qFuzzyCompare(line.length(), qreal(0.)))
        return;
    painter->setPen(QPen(Qt::black, 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
    painter->drawLine(line);
    
    double angle = ::acos(line.dx() / line.length());
    if (line.dy() >= 0)
        angle = TwoPi - angle;
    QPointF destArrowP1 = destPoint + QPointF(sin(angle - Pi / 3) * arrowSize,
                                              cos(angle - Pi / 3) * arrowSize);
    QPointF destArrowP2 = destPoint + QPointF(sin(angle - Pi + Pi / 3) * arrowSize,
                                              cos(angle - Pi + Pi / 3) * arrowSize);
    painter->drawLine(QLineF(destArrowP1,destPoint));
    painter->drawLine(QLineF(destArrowP2,destPoint));

http://blog.csdn.net/u010177010/article/details/51496188

Qt的paint函数重写,以及QPaint给一条线绘制箭头

标签:compare   size   bsp   line   cap   detail   epo   net   static   

原文地址:https://www.cnblogs.com/findumars/p/8424369.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!