您好:
因为canvas是画布,画布没有结构,没有层级,只有先来后到,后面的覆盖前面的。
调整一下代码顺序即可,让
oldPaint.apply(this, [context, value, x1, y1, a1, b1, style, ctx]);先画
context画圈的代码放到后面即可。就像下面这样:
- CustomBase.prototype.paint = function (context, value, x1, y1, a1, b1, style, ctx) {
- if (!context) {
- return;
- }
- oldPaint.apply(this, [context, value, x1, y1, a1, b1, style, ctx]);
- if(this.showEffect){
- var a = (a1+2)/2;
- var b = (b1+2)/2;
- var x = a + x1;
- var y = b + y1;
- var ox = 0.5 * a,
- oy = 0.6 * b;
- context.save();
- context.translate(x, y);
- context.beginPath();
- context.strokeStyle="red";
- context.lineWidth=2;
- context.moveTo(0, b);
- context.bezierCurveTo(ox, b, a, oy, a, 0);
- context.bezierCurveTo(a, -oy, ox, -b, 0, -b);
- context.bezierCurveTo(-ox, -b, -a, -oy, -a, 0);
- context.bezierCurveTo(-a, oy, -ox, b, 0, b);
- context.closePath();
- context.stroke();
- context.restore();
- }
-
- };
复制代码 |