旋转的箭头


 
 
  1. tesb::tesb(QWidget *parent)
  2. : QWidget(parent)
  3. {
  4. ui.setupUi( this);
  5. }
  6. void tesb::DrawCustomLine(QPainter& _painter, double _angle, double _len, const QString& _name, const QColor& _color)
  7. {
  8. // 初始化
  9. _painter.resetTransform(); // 重设画笔
  10. _painter.translate(QPoint( 300, 300));
  11. _painter.setPen(QPen(Qt::black, 2));
  12. // 绘制线段
  13. QLine _line(QPoint( 0, 0), QPoint(_len, 0));
  14. _painter.rotate(_angle);
  15. _painter.drawLine(_line);
  16. // 绘制箭头
  17. int off_x = 10;
  18. QPainterPath _path;
  19. _path.moveTo(_len-off_x, -5);
  20. _path.lineTo(_len, 0);
  21. _path.lineTo(_len-off_x, 5);
  22. _painter.drawPath(_path);
  23. // 绘制名称
  24. _painter.setPen(_color);
  25. QFont _font = _painter.font();
  26. _font.setPointSize( 10);
  27. _font.setBold( true);
  28. _painter.setFont(_font);
  29. _painter.drawText(QPoint(_len -2*off_x, -10), _name);
  30. }
  31. void tesb::paintEvent( QPaintEvent *ev )
  32. {
  33. QPainter _painter( this);
  34. _painter.setPen(QPen(Qt::black, 2));
  35. // 反锯齿
  36. _painter.setRenderHint(QPainter::Antialiasing);
  37. // 将画笔中心点移动至(300,300)
  38. _painter.translate(QPoint( 300, 300));
  39. // 绘制中心点
  40. _painter.drawPoint(QPoint( 0, 0));
  41. // 绘制外圆
  42. _painter.drawEllipse(QRect( -150, -150, 300, 300));
  43. DrawCustomLine(_painter, 0, 150, "Da", Qt::red);
  44. DrawCustomLine(_painter, 123.5, 130, "Db", Qt::green);
  45. DrawCustomLine(_painter, -45, 30, "Dc", Qt::blue);
  46. DrawCustomLine(_painter, -145, 60, "Dd", Qt::yellow);
  47. QWidget::paintEvent(ev);
  48. }


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值