您的位置:首页 > 编程语言 > Qt开发

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

2018-02-06 21:41 453 查看
直接代码:

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[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: