javascript - 我应该使用 CSS 缩放整个画布,还是应该使用相对值调整每个图像的大小?
问题描述
我正在尝试拥有一个全屏画布,并且我想根据其内容按比例调整它的大小。我正在争论这两种方法中哪一种更好......
1)让所有东西都具有基于像素的值,然后如果窗口被调整大小,只需用 css 缩放整个画布......
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
canvas.width = 1280;
canvas.height = window.innerHeight;
var sizeCanvas = function(){
scale = window.innerWidth/1280;
canvas.style.transform = 'scale('+ scale + ')';
canvas.height = window.innerHeight/scale;
}
sizeCanvas();
window.addEventListener('resize', function(){
sizeCanvas();
});
function loop(){
window.requestAnimationFrame(loop);
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.drawImage(img, 0,0,1280,300);
}
或 2) 以 window.inner 大小不断绘制画布,并使用相对于画布宽度和高度的值调整每个图像的大小
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var sizeCanvas = function(){
canvas.height = window.innerHeight;
canvas.width = window.innerWidth;
}
sizeCanvas();
window.addEventListener('resize', function(){
sizeCanvas();
});
function loop(){
window.requestAnimationFrame(loop);
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.drawImage(img, 0, 0, canvas.width, canvas.height/4);
}
我在画布上有很多事情要做,所以我想性能可能是最重要的
解决方案
推荐阅读
- html - 图像未对齐
- sql - 将多行数据插入单个列
- sql - SQL 服务器,用逗号分隔列
- python - 'open' 和 'csv.DictReader' 无法正确读取文件
- javascript - 如何在另一个结束后调用一个函数?
- jquery - OnScroll Down 标题高度得到但不是在滚动顶部时
- typescript - Typescript 编译器 api:获取完整类型的导出值
- xcode - 调用 newLibraryWithSource 时如何禁用金属编译器警告
- java - 从配置单元表读取时,Apache Spark 如何在不排序的情况下加入?
- nginx - 有没有办法通过命令行获取 nginx 选项值?