要使画布内容自适应,您需要设置画布的宽度和高度属性为视口的宽度和高度。然后,在调用绘图函数之前,您需要检查视口的大小,并根据需要重新计算图形的尺寸和位置。您还可以使用canvas的缩放功能来调整绘图内容以适应视口大小。

例如,以下代码将canvas的宽度和高度设置为视口大小,然后在绘制之前重新计算图形的尺寸和位置:

const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');

// 设置画布的宽度和高度为视口大小
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;

function draw() {
  // 获取视口的宽度和高度
  const viewportWidth = window.innerWidth;
  const viewportHeight = window.innerHeight;

  // 计算图形的尺寸和位置
  const shapeWidth = viewportWidth * 0.8;
  const shapeHeight = viewportHeight * 0.8;
  const shapeX = (viewportWidth - shapeWidth) / 2;
  const shapeY = (viewportHeight - shapeHeight) / 2;

  // 清空画布
  ctx.clearRect(0, 0, canvas.width, canvas.height);

  // 绘制图形
  ctx.fillRect(shapeX, shapeY, shapeWidth, shapeHeight);
}

// 在窗口大小改变时重新绘制
window.addEventListener('resize', draw);

// 初始绘制
draw();

在上面的代码中,我们在绘制函数中计算图形的尺寸和位置,然后使用ctx.fillRect()方法绘制一个矩形。我们还在窗口大小改变时重新绘制图形。这确保我们的画布内容始终与视口大小相匹配。

您还可以使用canvas的缩放功能来调整绘图内容以适应视口大小。例如,以下代码将画布缩放为视口大小:

const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');

// 设置画布的宽度和高度为视口大小
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;

// 缩放画布以适应视口大小
ctx.scale(window.innerWidth / canvas.width, window.innerHeight / canvas.height);

function draw() {
  // 清空画布
  ctx.clearRect(0, 0, canvas.width, canvas.height);

  // 绘制图形
  ctx.fillRect(0, 0, canvas.width, canvas.height);
}

// 在窗口大小改变时重新绘制
window.addEventListener('resize', () => {
  // 更新画布的宽度和高度
  canvas.width = window.innerWidth;
  canvas.height = window.innerHeight;

  // 缩放画布以适应视口大小
  ctx.scale(window.innerWidth / canvas.width, window.innerHeight / canvas.height);

  // 重新绘制
  draw();
});

// 初始绘制
draw();

在上面的代码中,我们使用ctx.scale()方法将画布缩放为视口大小。我们还在窗口大小改变时重新计算画布的宽度和高度,并缩放画布以适应新的视口大小。这确保我们的画布内容始终与视口大小相匹配


原文地址: https://www.cveoy.top/t/topic/fF7R 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录