Javascript 不能同时设置画布宽度和更改字体?
在JSFIDLE中,调用measureText设置画布宽度:Javascript 不能同时设置画布宽度和更改字体?,javascript,css,html5-canvas,Javascript,Css,Html5 Canvas,在JSFIDLE中,调用measureText设置画布宽度: tCtx.canvas.width = tCtx.measureText(this.value).width; 覆盖字体大小: tCtx.font = "25px serif" 如果删除对measureText的调用,则画布将使用预期的字体大小。不幸的是,我不得不猜测画布的宽度。这是为什么?有更好的方法吗?只需将tCtx.font语句移动到fillText语句之前即可 tCtx.canvas.width
tCtx.canvas.width = tCtx.measureText(this.value).width;
覆盖字体大小:
tCtx.font = "25px serif"
如果删除对measureText的调用,则画布将使用预期的字体大小。不幸的是,我不得不猜测画布的宽度。这是为什么?有更好的方法吗?只需将tCtx.font语句移动到fillText语句之前即可
tCtx.canvas.width = tCtx.measureText(this.value).width;
tCtx.font = 'bold 24px serif';
tCtx.fillText(this.value, 0, 10);
更改画布维度也会重置上下文。调整大小后,您需要再次设置字体(以及任何其他非默认设置)
tCtx.font='bold 24px serif';
tCtx.canvas.width=tCtx.measureText(this.value).width;
tCtx.font=‘粗体24px衬线’;
tCtx.fillText(该值为0,10);
在调整大小时,保存的状态(通过/)也会丢失。如果希望对画布状态进行大量更改,您可能希望将这些更改分解为自己的
.save()
/.restore()
函数。但是.measureText()
正在使用旧的或默认的字体设置。您需要在调整大小之前和调整大小之后分别定义两次