解决方法
画布有两种类型的调整大小行为:
>调整内容的拉伸尺寸以适应画布的新尺寸
>调整画布增长或缩小时内容保持静态的大小
这是一个页面,演示了两种类型的“调整大小”:http://xavi.co/static/so-resizable-canvas.html
如果您想要第一种类型的调整大小(拉伸内容),然后将画布放入容器div中,并使用CSS将画布的宽度和高度设置为100%。这是代码可能是这样的:
/* The CSS */ #stretch { height: 100px; width: 200px; } #stretch canvas { width: 100%; height: 100%; } <!-- The markup --> <div id="stretch"><canvas></canvas></div> // The JavaScript $("#stretch").resizable();
第二种调整大小(静态内容)是一个两步的过程。首先,您必须调整canvas元素的width和height属性。不幸的是,这样做会清除画布,所以你必须重新绘制所有的内容。这里有一点代码:
/* The CSS */ #resize { height: 100px; width: 200px; } <!-- The markup --> <div id="resize"><canvas></canvas></div> // The JavaScript $("#resize").resizable({ stop: function(event,ui) { $("canvas",this).each(function() { $(this).attr({ width: ui.size.width,height: ui.size.height }); // Adjusting the width or height attribute clears the canvas of // its contents,so you are forced to redraw. reDraw(this); }); } });
目前,当用户停止调整窗口小部件的大小时,上面的代码重新绘制了画布的内容。可以在resize上重新绘制画布,但调整大小的事件相当频繁地发生,重新绘制是昂贵的操作 – 谨慎使用。