源码来自 jtopo交流群(171820448) 中的大神:我不是作者只是咖啡爱好者(616487222)、原博客名:dark

var canvas = document.getElementById('canvas');
var stage = new JTopo.Stage(canvas);
var scene = new JTopo.Scene(stage);var node = new JTopo.Node("节点");
node.textPosition ="Middle_Center";
node.setBound(10, 10,40,40);
node.fontColor="0,0,0";node.alarm="告警文字\n告警文字\n告警文字告警文字\n告警文字\n告警文字\n告警文字";node.paintAlarmText = function(a) {if (null != this.alarm && "" != this.alarm) {var b = this.alarmColor || "255,0,0",c = this.alarmAlpha || .5;a.beginPath(),a.font = this.alarmFont || "10px 微软雅黑";var textArray = this.alarm.split('\n');var rowCnt = textArray.length;var i = 0, maxLength = 0, maxText = textArray[0];for(;i<rowCnt;i++){var nowText = textArray[i],textLength = nowText.length;if(textLength >=maxLength){maxLength = textLength;maxText = nowText;}}var maxWidth = a.measureText(maxText).width;var lineHeight = 16; // 字体大小 + 6// alarm框的宽度var d =( (a.measureText(this.alarm).width/rowCnt +6) > maxWidth? (a.measureText(this.alarm).width/rowCnt +6) : maxWidth);var e =(lineHeight)*(rowCnt), // alarm 框高度 行高*行数f = this.width / 2 - d / 2 , // alarm 框横向位置g = - this.height /2  - e - 20; // alarm 纵横向位置
////绘制alarm框a.strokeStyle = "rgba(" + b + ", " + c + ")",a.fillStyle = "rgba(" + b + ", " + c + ")",a.lineCap = "round",a.lineWidth = 1,a.moveTo(f -10, g - 10), // 左上  这些10是调整 alarm 边框离文字的距离a.lineTo(f + d +10, g - 10), // 右上a.lineTo(f + d +10, g + e + 10), // 右下a.lineTo(f + d / 2 + 6, g + e  + 10),a.lineTo(f + d / 2, g + e + 8  + 10),a.lineTo(f + d / 2 - 6, g + e  + 10),a.lineTo(f - 10, g + e  + 10), // 左下a.lineTo(f -10, g -10),a.fill(),a.stroke(),a.closePath(),a.beginPath(),a.strokeStyle = "rgba(" + this.fontColor + ", " + this.alpha + ")",a.fillStyle = "rgba(" + this.fontColor + ", " + this.alpha + ")",(function(a,b,x,y,textArray){for(var j= 0;j<textArray.length;j++){var words = textArray[j];a.fillText(words,x ,y);y+= lineHeight;}})(a,this,f,g+8,textArray),a.closePath()}
}scene.add(node);

最近发现大神张鑫旭对 canvas 文本操作提供的API,值得推荐:
canvas文本绘制自动换行、字间距、竖排等实现

jtopo 告警 Alarm 换行 demo相关推荐

  1. jtopo node.text换行_求助:jtopo node文字换行问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 在jtopo 生成前,粘贴以下代码 CanvasRenderingContext2D.prototype.wrapText = function(str, ...

  2. AZURE 日志分析自动告警

    小伙伴们好久不见,今天我们来聊聊中国 AZURE 的日志分析告警.为什么是中国 AZURE,目前中国 AZURE 的 Monitor 服务和运维相关周围服务和 Global 是有所不同的,所以有些功能 ...

  3. W800|WIFI|CDK|W80X SDK v1.00.10|官方demo|学习(2):t-connect

    目录 官方文档及SDK 1.W800 SDK v1.00.10更新内容: 2. DEMO概要 3.t_connect demo测试 CDK中打开project: Project文件在: 编译完成:​编 ...

  4. 一封传话聚合推送各语言demo代码示例

    一封传话聚合推送各语言demo代码示例 前言 查看一封传话的API文档的GET请求只需一行代码,在url上拼接head和body参数即可完成推送.这里针对body数据量较大的情况,给出各语言实现的de ...

  5. AWS EC2 instance 监控、告警

    1. 在AWS 控制台的EC2 dashboard页面, 'system status check' 表示instance是否可以通过网络访问,如果这个check fails,很有可能是该instan ...

  6. 电路图中常用的英文缩写的中文解释

    A A 模拟 A/DC模拟信号到数字信号的转换 A/L音频/逻辑板 AAFPCB音频电路板 AB 地址总线 ab 地址总线 accessorier 配件 ACCESSORRIER 配件 ADC(A/O ...

  7. kafka可视化工具_Kafka值得一用的监控系统

    文章作者:哥不是小萝莉 内容出处:作者本人 适用人群:大数据 注:欢迎转载,转载请注明出处 什么是KAFKA?                                  Apache Kafk ...

  8. 审计系统---堡垒机python下ssh的使用

    堡垒机python下ssh的使用 [堡垒机更多参考]http://www.cnblogs.com/alex3714/articles/5286889.html [paramiko的Demo实例]htt ...

  9. 【skywalking 部署测试】

    提示:学习记录 skywalking 部署测试 概述 一.skywalking 基础测试 1. 基于 docker-compose 或二进制部署 SkyWalkingMarkdown 2. 实现单体服 ...

最新文章

  1. UVa10905 - Children's Game(贪心算法)
  2. 【Linux】44.设置ubuntu电脑为简单的密码
  3. 引入用于 Azure IoT Edge 的 Visual Studio 工具
  4. DSS流媒体服务器搭建
  5. 博途plc连接电脑_PLC编程中如何连接电脑将程序写入PLC
  6. 前置加加与后置加加的区别
  7. 你所不知道的Activity转场动画——ActivityOptions
  8. 算法设计与分析-习题-动态规划法求解资源分配问题(动态规划法)
  9. NOI 十连测 Zbox loves ants
  10. Tic-Tac-Toe可能棋局搜索的实现(python)
  11. Android AES 文件加密解密
  12. 1688-cat_get - 获得1688商品分类
  13. 天耀18期 - 12.数据结构-1-2.LinkedList【作业】-猜数字.doc
  14. 7-15 球队“食物链” (30 分)
  15. windows编程中wParam和lParam消息
  16. 解决论文写作排版中,两端对齐导致文字间距被word补过大的问题
  17. #ifdef __cplusplus 是什么意思?
  18. K8S使用教程(详细)
  19. 周董新专辑跨时代 flac版下载地址~
  20. 对于LM法和信赖域的理解

热门文章

  1. 4G标准将统一:TD-LTE-Advanced或成唯一国际标准
  2. YOLOv8模型调试记录
  3. JAVA NIO技术壁垒
  4. MODNet模型部署以及一些改动
  5. 智力竞赛抢答器Verilog HDL设计
  6. Cisco简单配置(十八)—OSPF
  7. 安卓App抓包经验谈
  8. 【05】概率图表示之马尔可夫随机场
  9. 恋爱周年纪念日-送给女友的网页
  10. android 自定义圆形pop,自定义通过PopupWindow实现通用菜单