根据脚本实时渲染图形,图形内容需通过脚本显示。脚本支持使用cvs模块进行图形绘制操作,提供了丰富的图形API,如:cvs.init():初始化画布、cvs.translate():坐标变换、
cvs.set_color():设置颜色、 cvs.set_line_width():设置线宽、 cvs.begin_path():开始路径绘制、 cvs.arc():绘制弧线/圆形、 cvs.move_to():移动绘制点。写作canvas("c.lua", (20, 50, 400, 400), id="face")
该控件需联合调用槽函数("face", "update", page="page1")控件动作使用,用于更新渲染图形,其中lua脚本中可以访问cnc的数据和canvas api
script="xxx.lua"(如果是lua文件)(a, b, c, d) 其中a/b/c/d都应该是正整形值分别表示控件的 起始行/起始列/所占行数/所占列数,其中c/d可以省略,省略时值均为1。visible="#100",当图形需要跟随系统变量变化时需要使用控件动作调用槽函数更新图形内容。 page形参和panel形参只选择一个就行。
写作调用槽函数("face", "update", page="page1"),第1位参数为控件id。第2位参数为槽功能,目前只支持更新update。第3位参数为canvas控件所在页面(page)的id名称。
update
add_periodic_task([调用槽函数("face", "update", page="page1")], 1) # 使用周期任务更新在“page1”页面下的“face”控件
with page(456, 800, id="page1", text=(白色, f20x10, 居中), bg_color=(24, 24, 24)):
canvas('''local cvs = require("cvs")
cvs.init()
cvs.translate(_var{no=500} or 0, _var{no=501} or 0)
cvs.set_color(cvs.fill_style, 0.2, 0.2, 0.2)
cvs.set_line_width(2)
cvs.set_color(cvs.stroke_style, 0, 1, 0)
cvs.begin_path()
cvs.arc(75, 75, 50, 0, math.pi * 2)
cvs.move_to(110, 75)
cvs.arc(75, 75, 35, 0, math.pi)
cvs.move_to(65, 65);
cvs.arc(60, 65, 5, 0, math.pi * 2)
cvs.move_to(95, 65);
cvs.arc(90, 65, 5, 0, math.pi * 2)
cvs.stroke()''', (20, 50, 400, 400), id="face", is_file=False)
menu("第一页", "page1")