【发布时间】:2016-06-17 02:43:32
【问题描述】:
我正在尝试更改 HTML 画布的分辨率。 (不是宽度和高度)。画布应该保持与屏幕相同的宽度和高度,但渲染分辨率应该是可变的。我可以通过使用浏览器中的缩放功能来复制我想要的东西,但我想知道是否有一种编程方式可以做到这一点。这是我尝试过的:
function resize() {
screenWidth = mathRound(window.innerWidth);
screenHeight = mathRound(window.innerHeight);
calculateUIScale();
var scaleFillNative = Math.max(screenWidth / maxScreenWidth, screenHeight / maxScreenHeight);
c.width = screenWidth;
c.height = screenHeight;
graph.setTransform(scaleFillNative, 0, 0, scaleFillNative, ((screenWidth - (maxScreenWidth * scaleFillNative)) / 2), ((screenHeight - (maxScreenHeight * scaleFillNative)) / 2));
graph.imageSmoothingEnabled = false;
graph.webkitImageSmoothingEnabled = false;
graph.mozImageSmoothingEnabled = false;
}
这使画布适合屏幕。我想知道您是否可以以某种方式缩放画布元素以模拟不同的分辨率。
我已经尝试过这样做:
c.width = 40;
c.style.width = 400;
但画布现在真的很小。
【问题讨论】:
-
您可以使用 css 对其进行拉伸或收缩,有时对高清屏幕很有用,但请确保保持纵横比,并且您的所有坐标也会被缩放(例如,如果您使用鼠标事件侦听器)
-
画布的
width和height属性定义了画布包含的像素数量。相应的 css-properites 定义画布的尺寸(一旦设置)。如果这两组尺寸不同,则您正在缩放画布上的像素;向下或向上。 -
@Thomas 我试图设置 canvas.width = 40;和 canvas.style.width 400 但这不起作用
-
“没有工作”并不是对你做了什么、你期望什么以及实际发生了什么的非常精确的描述。我不确定,你对“改变画布分辨率”的理解是否和我的一样。除了实现目标的方法之外,您能否解释一下您想要实现的目标。
标签: javascript html css canvas