【发布时间】:2016-03-23 18:33:45
【问题描述】:
我正在尝试将一些文本呈现到单独的画布上,如下所示:
var tmpCanvas = document.createElement("canvas");
var tmpContext = tmpCanvas.getContext('2d');
tmpContext.textAlign = 'center';
tmpContext.font = size + 'px';
tmpCanvas.width = tmpContext.measureText(txt).width;
tmpCanvas.height = size;
tmpContext.fillStyle = "#000";
tmpContext.fillRect(0, 0, tmpCanvas.width, tmpCanvas.height);
tmpContext.fillStyle = color;
tmpContext.fillText(txt, tmpCanvas.width / 2, tmpCanvas.height / 2);
然后这个画布被渲染到主画布的中心:
context.drawImage(cachedText, (d_canvas.width / 2) - (cachedText.width / 2), (d_canvas.height / 2) - (cachedText.width / 2), cachedText.width, cachedText.height);
我正在这样做,因为绘制的文本非常复杂,所以我不想重复多次绘制操作。然而,问题是尽管我将画布大小设置为等于文本大小,但文本比画布小,而且偏离中心。如上所述,如何创建带有预渲染文本的画布/图像对象。
这里有一个小提琴来说明这个问题:http://jsfiddle.net/x4t1vjam/
【问题讨论】:
标签: javascript html canvas