/** * 不规则多边形,元空间 */ import SGraphyItem from '../SGraphyItem' import SRect from './../types/SRect'; export default class SGraphyPolygonItem extends SGraphyItem { /** * * 构造函数 * * @param jsonArr 空间线条数组 * @param lineWidth 空间线条的宽度 * @param color 空间线条的颜色 * @param fillColor 空间的填充颜色 * */ constructor(jsonArr, lineWidth, color, fillColor, parent = null) { super(parent) this.jsonArr = jsonArr this.lineWidth = lineWidth this.color = color this.fillColor = fillColor } //constructor /** * Item的边界区域 * * @return SRect */ boundingRect() { return new SRect(0, 0, this.width, this.height) } /** * 绘制不规则多边形 * * @param canvas 画布 * @param rect 绘制区域 */ onDraw(canvas, rect) { if (this.jsonArr && this.jsonArr.length) { canvas.beginPath(); canvas.lineWidth = this.lineWidth || 1 canvas.strokeStyle = this.color || '#000' canvas.fillStyle = this.fillColor || '#fff' canvas.moveTo(this.jsonArr[0].X / 120 * -1, this.jsonArr[0].Y / 120) for (let i = 1; i < this.jsonArr.length - 1; i++) { canvas.lineTo(this.jsonArr[i].X / 120 * -1, this.jsonArr[i].Y / 120) } canvas.lineTo(this.jsonArr[0].X / 120 * -1, this.jsonArr[0].Y / 120) canvas.closePath() canvas.fill() canvas.stroke() } } }