在不重新绘制的情况下为现有画布添加更多空间
Add more space to existing canvas without redrawing?
我已经创建了一个画布,在上面绘制了图像和文本。是否可以在不重新绘制所有内容的情况下为当前画布添加更多空间(在我的情况下是高度)?我想在已经绘制的项目下面添加文本,但要做到这一点,我必须在画布上添加更多的高度。
或者我可以用另一种方式来做——创建一个太大的画布,然后添加我所有的文本,最后裁剪画布(去除白色未使用的空间)?
我喜欢递归的想法,使用一个容器,先将其缩小,然后展开以显示绘制文本所需的额外画布空间。
调整画布大小的另一种常见方法是将画布内容从临时画布上反弹。
// create a temp canvas (no need to add it to the DOM)
var tempCanvas=document.createElement('canvas');
var tempCtx=tempCanvas.getContext('2d');
tempCanvas.width=mainCanvas.width;
tempCanvas.height=mainCanvas.height;
// draw the main canvas to the temp canvas
tempCtx.drawImage(mainCanvas,0,0);
// resize the main canvas
mainCanvas.height+=30;
// restore the main canvas content by drawing the temp canvas
mainCtx.drawImage(tempCanvas,0,0);
您可以将画布放在具有固定目标高度的容器中。如果将其overflow
设置为hidden
,则可以控制可以看到的内容。
更改画布的尺寸可以清除它,这样就不起作用了。
相关文章:
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在映射数组中添加换行符
- 正在将数据主题添加到所有项目
- ZeroClipboard-在复制之前添加到值
- 我可以在json对象中添加一个函数吗
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 正在SharePoint 2013母版页中添加JQuery移动文件
- 如何添加浮动和非浮动,其他
- 添加文字和评论功能更新Div
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- JavaScript/jQuery-添加添加和删除类与下一个函数之间的延迟
- wooccommerce登录页:如何添加添加到购物车按钮
- 当在堆栈底部添加ImageView时,我想删除RelativeLayout中的顶部ImageView,但它正在删除整个布
- 如何添加添加边框的无限制点击
- 我如何添加添加到一个javascript对象
- 石头剪刀布Javascript游戏添加选择限制
- 得到我的tabpanel组件,但不能使用添加添加一个选项卡
- 如何在yuidoc中添加添加外部链接(grunt contrib yuidoc)
- 在队列jQuery中添加添加/删除类点击图片