如何在HTML5画布元素中包含SVG图像,以便在更改浏览器窗口大小时调整SVG的大小?
答案 0 :(得分:4)
这需要一些样板代码来证明,所以我只是指出你正确的方向。
假设您可以访问名为myCanvas
的画布对象/元素。执行var ctx = myCanvas.getContext('2d')
时,ctx
是CanvasRenderingContext2D
的实例。现在,当您绘制图像img
时,执行ctx.drawImage(img, dx, dy, sw, sh)
其中:
dx
和dy
是左上角的偏移。sw
和sh
是图片的绝对大小。因此,您可以使用sw
和sh
调整图片大小。您希望它们依赖于您可以使用myCanvas.height
和myCanvas.width
访问的画布大小。
您希望画布宽度/高度取决于窗口大小。可以使用window.innerWidth
和window.innerHeight
访问窗口大小。调整大小时,您可以像这样听取此事件:window.addEventListener('resize', function (evt) { /* handle resize here */ });
。例如:
var updateCanvasSize, canvasRelativeSize;
canvasRelativeSize = .5;
updateCanvasSize = function (evt) {
myCanvas.width = canvasRelativeSize * window.innerWidth;
myCanvas.height = canvasRelativeSize * window.innerHeight;
draw(); // redraws the canvas since size has changed
};