查看: 4115|回复: 23
收起左侧

[综合教程经验] HMI分享:画布2

Slimming 2021-10-29 12:55:12 | 显示全部楼层 |阅读模式
邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x
本帖最后由 Slimming 于 2022-3-4 14:49 编辑

HMI画布说明
image.png
1.     画布简介
InoTouchPad中的画布是采用的JavaScript的canvas功能,canvas可实现2D、3D等绘图功能。本人是初学者,经过一段时间的使用体验感觉画布功能十分强大,如果编写内容足够丰富,可基本实现HMI自带的大部分控件的自定义。

画布实现功能总结如下:

①画线,根据HMI像素密度绘制点到点的连接线,可设置线宽、颜色、连接样式、交点样式、透明度等参数。另外可通过画线实现区域像素的全部布满,看起来就是一个图形;
②画圆,根据圆心坐标、半径、起始角、终止角,旋转方向,绘制圆或者圆弧;
③画矩形,根据对角线的起点坐标和终点坐标绘制矩形,有绘制边框和填充两种方式。
绘制的路径或者任何连接线,都可以使用closePath来闭合图形,使用fillStyle填充时会默认闭合。


画布功能是基于canvas但不等同,因为硬件和框架的限制,目前测试发现部分命令不支持,由于研发也没有给出详细的说明,具体不支持的命令需要测试去发现,目前发现的不支持命令后面会给出总结。



2.     HMI添加画布
打开InoTouchPad后,画布位置在:右侧工具-增强控件-画布,双击画布按钮拖入画面中,修改画面大小,双击打开画布“属性“,在加载中添加编辑好的脚本。
image.png


3.     编写简单的画布程序
①对画布进行定义连接
var canvas =ScreenItem("画面_1","画布_1");
var ctx = canvas.draw2d();
var w =ctx.width();
var h = ctx.height();
设置的画布所在画面和画布名称需要对应上,不然会出现报错,可通过width,height获取画布的宽和高,宽高对于有居中要求的比较重要。

②画布保存和清除
ctx.clearRect(0,0,w,h);
ctx.save();
ctx. restore ();
通常情况下,画布编辑第一步是清除整个画布。因为程序中操作会使用到坐标的平移和旋转,所以在操作前一般都使用save保存当前属性,然后进行操作,操作后再使用restore恢复之前的属性,这样就能保证一段程序中的操作不受上下文的属性影响,所以在单段程序中经常会出现save和restore的配合使用,如下图:
image.png

③坐标的平移旋转
ctx.rotate(弧度);
ctx.translate(x,y);
坐标的平移旋转可以用来实现复制图像,例如时针的刻度可以画一条线用多段rotate实现,图居中原点的修改可用translate进行平移。如下图,切记平移旋转一定要配合保存和恢复使用,不然编写的理想位置和实际位置可能出现偏差。
image.png

④绘制图形
ctx.beginPath();//开始路径
ctx.moveTo(x,y);//路径起点
ctx.lineTo(x,y);//画线
ctx.arc(0,0,r,0,Math.PI*2,true);//画圆
ctx.strokeStyle=’black’;//路径颜色
ctxfillStyle=’black’;//填充颜色
ctx.stroke();//路径描边
ctx.fill();//颜色填充

ctx. ctxfillStyle=’rgb(0,0,0,1)’; //rgba颜色设定,四个参数分别为红、绿、蓝、透明度。

moveTo 和lineTo中的坐标可以是变量和语句,通过修改变量的值可实现画任何图形,这个功能十分方便。绘画相关命令较多,具体用法可去网站查找资料学习,搜索关键词canvas。


4.     不支持命令
目前发现的InoTouchPad不支持canvas命令或做了修改但未说明的,如下:
arcTo       createRadialGradinet   addColorStop       Image
fillText     strokeText



下面分享几个前几天做的小功能,本人也是最近刚接触画布,在论坛没有发现和画布相关的帖子,自己积攒的疑问也挺多,所以想通过此帖和大家一起讨论交流。
第一次发帖,上个帖子因为设置问题导致别人花了水滴但是花的太冤枉,在此致歉,上个帖子的附件已删除。
考虑到大家用的触摸屏版本问题,所以下面分享两个代码放入txt文本内,复制到脚本中,修改 画面名称 和 画布名称 对应上即可。
欢迎大家一起来交流学习。



代码.7z

1.76 KB, 下载次数: 97

进度条.mp4

469.78 KB, 下载次数: 73

音乐.mp4

376.47 KB, 下载次数: 59

贪吃蛇.mp4

1.59 MB, 下载次数: 95

按钮.mp4

243.05 KB, 下载次数: 52





上一篇:HMI分享:画布1
下一篇:汇川的屏能不能简单好上手点呢

已有 0 人打赏作者

回复 邀请回答送花

使用道具 举报

Slimming 2021-10-29 19:49:50 | 显示全部楼层
CSDN_JS绘图
给大家分享一个CSDN的画布命令讲解的博客,内容讲解比较详细,代码复制方便。
回复 送花

使用道具 举报

Slimming 2021-10-29 19:45:39 | 显示全部楼层
黑曼巴舍 发表于 2021-10-29 19:03
这个看起来很高大上啊

是的,canvas功能很强大,能做的动态比较多,有些小游戏就是基于canvas开发的,感兴趣可以上手试试,几天就能入门
回复 送花

使用道具 举报

Slimming 2021-10-29 19:52:23 | 显示全部楼层
(5条消息) js绘图_阿牛大牛中的博客-CSDN博客_js画图
分享一个关于画布的博客,内容讲解的很详细,举例的指令代码复制也很方便。
回复 送花

使用道具 举报

黑曼巴舍 2021-10-30 09:29:12 | 显示全部楼层
孙黎明 发表于 2021-10-29 19:45
是的,canvas功能很强大,能做的动态比较多,有些小游戏就是基于canvas开发的,感兴趣可以上手试试,几天 ...

好的,有机会一定去试试
回复 送花

使用道具 举报

南空a 2022-1-10 17:45:21 | 显示全部楼层
贪吃蛇和进度条的代码能发出来就好了
回复 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

扫码下载掌上汇川APP

全国服务热线:8:30-17:30

4000-300124

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部