Для демонстрации требуется довольно много стандартного кода, поэтому я просто укажу вам правильное направление.
Скажем, у вас есть доступ к объекту / элементу холста с именем 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
};