画箭头需要注意:

计算箭头两个线的位置和长度与直线或弧线间的位置关系。

1.画直线箭头

关键代码

    const int length = 10;//箭头斜着的投影到线上的长度QVector<QLineF> lines;lines.append(QLineF(20,height()/2,width()/2,height()/2));lines.append(QLineF(width()/2-length,height()/2+length,width()/2,height()/2));lines.append(QLineF(width()/2-length,height()/2-length,width()/2,height()/2));QPen pen;pen.setColor(Qt::blue);pen.setWidthF(3.5);painter.setPen(pen);painter.drawLines(lines);

2.画弧线箭头

关键代码

    painter.translate(width()/2,height()/2);painter.setRenderHint(QPainter::Antialiasing);const int radius = 150;const int startAngle = 45;const int spanAngle = 90;const float PI = 3.14;const float ratio = 0.5;QPen pen;pen.setWidth(3);pen.setColor(Qt::red);pen.setCapStyle(Qt::RoundCap);painter.setPen(pen);painter.drawArc(QRectF(-radius,-radius,radius*2,radius*2),startAngle*16,spanAngle*16);QVector<QLineF> lines;lines.append(QLineF(radius*cos(startAngle*PI/180),-radius*sin(startAngle*PI/180),radius*cos(startAngle*PI/180)-10,-radius*sin(startAngle*PI/180)));lines.append(QLineF(radius*cos(startAngle*PI/180),-radius*sin(startAngle*PI/180),radius*cos(startAngle*PI/180),-radius*sin(startAngle*PI/180)-10));painter.drawLines(lines);

painter.translate(width()/2,height()/2);painter.setRenderHint(QPainter::Antialiasing);const int radius = 150;const int startAngle = 45;const int spanAngle = 90;const float PI = 3.14;const float ratio = 0.5;QPen pen;pen.setWidth(3);pen.setColor(Qt::red);pen.setCapStyle(Qt::RoundCap);painter.setPen(pen);painter.drawArc(QRectF(-radius,-radius,radius*2,radius*2),startAngle*16,spanAngle*16);QVector<QLineF> lines;
//    lines.append(QLineF(radius*cos(startAngle*PI/180),-radius*sin(startAngle*PI/180),radius*cos(startAngle*PI/180)-10,-radius*sin(startAngle*PI/180)));
//    lines.append(QLineF(radius*cos(startAngle*PI/180),-radius*sin(startAngle*PI/180),radius*cos(startAngle*PI/180),-radius*sin(startAngle*PI/180)-10));lines.append(QLineF(radius*cos((startAngle+spanAngle)*PI/180),-radius*sin((startAngle+spanAngle)*PI/180),radius*cos((startAngle+spanAngle)*PI/180)+10,-radius*sin((startAngle+spanAngle)*PI/180)));lines.append(QLineF(radius*cos((startAngle+spanAngle)*PI/180),-radius*sin((startAngle+spanAngle)*PI/180),radius*cos((startAngle+spanAngle)*PI/180),-radius*sin((startAngle+spanAngle)*PI/180)-10));painter.drawLines(lines);

QPainter画箭头相关推荐

  1. 【opencv】3.在一个opencv窗口中显示多个视频界面、画箭头、画掉头箭头

    1.在一个opencv窗口中显示不同视频界面 /** * @brief 在一个opencv窗口win_name中显示不同视频界面 * @param img_1 和 img_2 是分别是取自不同视频中的 ...

  2. MFC中实现的画箭头算法 (Arrow in MFC)

    在codeproject中寻找到一个这样的算法,在这里介绍一下 可以改变三角形大小,顶点角度,是否填充和填充颜色等 但是画出的箭头还是不够美观....呵呵,还好吧 其中填充是代表箭头内是否填充颜色 先 ...

  3. python画箭头表示风速风向_python画风羽及风羽定义

    basemap使用手册:链接:https://pan.baidu.com/s/1CUgQcsuYMbJAdCuij4WsLQ 提取码:aw16 如果想用箭头画风场,请看另一篇python matplo ...

  4. matlab 中画箭头

    matlab 画图时,没有直接画箭头的函数.网上搜索解决方案时,有人提到用 annotation 函数,但该函数的位置坐标并不是传统的坐标值,而是在整个图形位置的单位坐标,不好调整:另一种方法 用 f ...

  5. html上图片用js绘制点,用 js + html 描图 与画箭头

    所示代码演示如下功能: 在画布(canvas, z-index:3;)上描画某一个 下层的影像(img1, z-index:1;)的时候, 如文本框显示,可以知道图中任何一点,即鼠标所在的位置[x,y ...

  6. lisp画弯箭头_在cad中直接画箭头

    在中CAD中直接画箭头的命令的一个方法!!! 众所周知,在天正中可直接绘制箭头,而在AutoCAD中不得.最近我发现一个在命令行直接输入命令就可画出你想要的尺寸的箭头的方法,具体实施如下: 1.首先拷 ...

  7. lisp画弯箭头_在CAD中直接用命令画箭头

    加入化海川流化工人平台,对接专业人技术圈 您需要 登录 才可以下载或查看,没有帐号?注册 x 在论坛里面看到还有人讨论画箭头的问题~ 这里分享一个简单实用的~在命令行直接输入命令就可画出你想要的尺寸的 ...

  8. lisp画弯箭头_在CAD中直接画箭头的命令的一个方法

    在CAD中直接画箭头的命令的一个方法!!! 众所周知,在天正中可直接绘制箭头,而在AutoCAD中不得.最近我发现一个在命令行直接输入命令就可画出你想要的尺寸的箭头的方法,具体实施如下: 1.首先拷贝 ...

  9. OpenCV 画箭头 python

    openCV画箭头函数arrowedLine画出来的很丑,自己写了一个画箭头函数,结果如下 1.OpenCV 画箭头的函数 if __name__ == "__main__":pa ...

  10. 在matlabnbsp;画箭头

    非常实用的文章 原文地址:在matlab 画箭头作者:纯情小郎君 完整见链接http://www.mathworks.com/matlabcentral/fx_files/14056/1/conten ...

最新文章

  1. LeetCode Excel Sheet Column Title(表格列数数字到英文转换)
  2. Python之pandas:pandas.set_option函数的参数详细解释
  3. kube-controller-manager 配置参数解读
  4. mysql怎么禁止远程连接_mysql如何设置禁止远程连接
  5. java oo 封装_Java从小白到入门,Day6。JAVAOO-封装
  6. python 字符串 4位一组_Python基础4- 字符串
  7. Java讲课笔记25:缓冲流、字符流与转换流
  8. java web请求转发_Javaweb请求转发及重定向实现详解
  9. java8堆内存模型_「GC系列」JVM堆内存分代模型及常见的垃圾回收器
  10. media encoder中文2022已上线
  11. 基于JSP和SQL的CD销售管理系统
  12. 文本对比工具google-diff-match-patch
  13. mysql order by注入_sql注入之order by注入
  14. DNK开发—Eclipse环境变量配置
  15. 全球化业务渐入佳境,BIGO盈利持续大幅提升,是时候重估欢聚集团
  16. 通过“控制面板-程序和附件“查看程序安装位置(终极篇)
  17. (Python)从零开始,简单快速学机器仿人视觉Opencv---运用二:物体检测
  18. Android菜谱应用客户端
  19. qt5编译项目出现undefined reference to 'classname::staticmetaobject'
  20. 【ABAQUS文档笔记】ABAQUS刚体单元和可变形单元的review

热门文章

  1. 海外直播公会Tik Tok,蓝海项目官方火热招募中
  2. 暖春战疫,程序员买买买指南
  3. 7-7 词典 (15 分)
  4. 卡尔滤波算法 java_卡尔曼滤波算法及其代码
  5. 基于微信小程序的奶茶外卖商城系统设计与实现毕业设计毕设开题报告
  6. 利息基础理论 - 寿险精算(2)
  7. 【1stopt】1stOpt的编程模式
  8. 跳频电台的设计与测试挑战
  9. 年会抽奖 - 牛客网题解
  10. 安卓游戏 我叫mt 3.5.4.0 3540,data.dat 文件解包记录