canvas绘画的库,模仿jQuery语法风格.
内部对象canvalib,是一个类数组对象.也是模仿jQuery的,里面包含canvas元素引用和ctx(2D)绘画对象和库提供的工具方法.
// 类数组对象,存放用id选取的canvas元素和2D绘画对象. // 返回this,可以链式调用 function canvalib(canvasId){ ... return this; } // 属性 this.canvas this.ctx // 工厂函数,实例化这个对象. function factory(selector){ return new canvalib(canvasId); } // 引用对象 外部调用这个函数使用cavlib对象. window.cavlib = factory;
style实例方法
调用工厂函数实例化后,可以调用style给画布设置样式风格
// 给canva元素设置style // 0:灰色背景,默认值 其它值:未实现 window.cavlib('canvasDomId').style(num = 0);
扩展cavlib对象实例方法
// 为cavlib对象添加实例方法 prototype上的方法. // json 一个方法名和函数值的json对像.方法名要用""号包起来. cavlib.extend(json)
将画布视为直角坐标系时,一些坐标系相关方法.皆为实例方法.
this // 画坐标系 this.xyAxis(); ...
在画布上绘制直角坐标系辅助线.省略所有参数时,坐标轴以画布中心为原点,长度为画布长/高
指定原点坐标,但不指定X/Y轴长时,坐标轴长度为画布长/高
this.xyAxis(style = 0, oX = 0, oY = 0, oXLen = 0, oYLen = 0, oXLen1 = 0, oYLen1 = 0)
连接2个或者以上的点,结束时画上箭头.箭头底边与线段最后一段垂直
this.lineArrow(points, side = 12, height = 10, fill = true)
根据对角线上2点画出矩形
this.p2Rect(x1, y1, x2, y2, style = 0, color = 'black')
画坐标系中的一点到x/y轴的垂直和水平连线
this.pointVH(x, y, style = 0, color = 'black', oX = 0, oY = 0)
标记一个点,用于放大显示
this.pointTag(x, y, color = 'black', style = 0, cir = 3)
给一个点标记字母
this.pointChar(x, y, char, deg = 0, color = 'black', cir = 20)
画经过两点的线段
this.line(x1, y1, x2, y2, color = 'black', lineWidth = 1)
填充路径区域
this.fillArea(points, color = 'black', rule = 0)
cavlib的静态对象line,计算一些直线相关的数据.
cavlib.line; // 两点间距离 cavlib.line.dist(); ...
需要注意的是,点的坐标值都是平面直角坐标系里的.这和canvas的坐标系不同,canvas向下和向右坐标值是正值,而平面直角坐标系向上和向右是正值,也就是说,Y坐标的值相反!所以,传入参数时,如果是canvas坐标值,那么Y值要传-Y.
获取两个点所在直线的斜率.如果与 X 轴平行,返回 0 ,与 Y 轴平行返回 null.
注意Y坐标值,canvas坐标要传入Y坐标的相反值.
line.getK(p1, p2, p2x, p2y)
获取两点间距离
line.dist(p1, p2, p2x, p2y)