uniapp中使用leaferui使用Canvas绘制复杂异形表格的实现方法
需求:
如下图,要实现左图的样式,先实现框架,文字到时候 往里填就行了,原来的解决方案是想用css,html来实现,发现实现起来蛮麻烦的。我也没找到合适的实现方法,最后换使用canvas来实现,使用的js库是leaferui
1.安装:用game是因为有一些交互,反正体积也不大
npm install leafer-game
2.wxml
<canvas
:style="'width:'+cabox.width+'px;height:'+cabox.height+'px;'"
id="leafer"
type="2d"
:width="cabox.width"
:height="cabox.height"
catchtouchstart="receiveEvent"
catchtouchmove="receiveEvent"
catchtouchend="receiveEvent"
catchtouchcancel="receiveEvent"
></canvas>
3.javascript
lf = new Leafer({view: window, width: that.cabox.width, height: that.cabox.height})
lf.add(Rect.one(0,0,that.cabox.width,that.cabox.height));
lf.add(Rect.one({width: that.cabox.width, height: that.cabox.height, strokeWidth: 2, stroke: "black",}));
lf.add(Rect.one({
strokeWidth: 2,
stroke: "black",
width: (that.cabox.perBox * 11.5),
height: (that.cabox.perBox * 11.5),
x: that.cabox.perBox * 1.75,
y: that.cabox.perBox * 1.75
}));
lf.add(Rect.one({
strokeWidth: 2,
stroke: "black",
width: (that.cabox.perBox * 9),
height: (that.cabox.perBox * 9),
x: that.cabox.perBox * 3,
y: that.cabox.perBox * 3
}));
lf.add(Line.one({
stroke: "black",
strokeWidth: 2,
points: [0, 0, that.cabox.perBox * 3, that.cabox.perBox * 3]
}));
lf.add(Line.one({
stroke: "black",
strokeWidth: 2,
points: [that.cabox.width, 0, that.cabox.perBox * 12, that.cabox.perBox * 3]
}));
lf.add(Line.one({
stroke: "black",
strokeWidth: 2,
points: [that.cabox.width, that.cabox.height, that.cabox.perBox * 12, that.cabox.perBox * 12]
}));
lf.add(Line.one({
stroke: "black",
strokeWidth: 2,
points: [0, that.cabox.height, that.cabox.perBox * 3, that.cabox.perBox * 12]
}));
lf.add(Line.one({
stroke: "black",
strokeWidth: 2,
points: [that.cabox.perBox*6, 0, that.cabox.perBox*6, that.cabox.height]
}));
lf.add(Line.one({
stroke: "black",
strokeWidth: 2,
points: [that.cabox.perBox*9, 0, that.cabox.perBox*9, that.cabox.height]
}));
lf.add(Line.one({
stroke: "black",
strokeWidth: 2,
points: [0, that.cabox.perBox*6, that.cabox.width, that.cabox.perBox*6]
}));
lf.add(Line.one({
stroke: "black",
strokeWidth: 2,
points: [0, that.cabox.perBox*9, that.cabox.width, that.cabox.perBox*9]
}));