我在ArrayList
中用一些动态文本填充画布。我将length
的{{1}}高度设置为ArrayList
或类似的东西。
HTML:
ArrayList.length * 20
JS:
<canvas id="myCanvas" width="272px" style="border: 1px solid black"></canvas>
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
var myheight = 10;
for(var i = 0; mylist.length > i; i++){
context.fillText("my text", 10, myheight);
myheight += 10;
}
工作正常,文字已填写..我正在尝试计算loop
之后的canvas.height
。
当我设置loop
并且所有填写的文本都消失了。canvas.height = myheight
空白。
如何在canvas
动态填充文本之后设置height
?
帮帮我...... 谢谢..抱歉英语不好..
答案 0 :(得分:1)
使用canvas.height = myheight
调整窗口或画布大小会清除画布
你需要浏览画布的内容并在调整大小的画布上重新绘制它
如果你想保存画布的内容并重新绘制它,这里有几个选项
使用context.getImageData
抓取整个画布,调整大小
canvas,然后使用context.putImageData以新的比例重绘它。
使用更新的尺寸和调用创建新画布
context.drawImage(oldCanvas, ...)
将旧画布复制到
新的一个。
致电context.setScale(xscale, yscale)
并调用您的任何功能
以前用来画画布。假设你设置了xscale和
正确的yscale,它会自动将所有内容扩展到新的
大小
答案 1 :(得分:0)
快速解决问题的方法是在绘制文本之前计算画布高度,因为在使用canvas.height时画布将被删除
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
var myheight = 10;
for(var i = 0; 10 > i; i++){
myheight += 10;
}
canvas.height = myheight;
myheight = 10;
for(var i = 0; 10 > i; i++){
context.fillText("my text", 10, myheight);
myheight += 10;
}