【发布时间】:2019-11-05 17:37:18
【问题描述】:
我想制作一个画布,它占据身体的整个宽度和高度(没有滚动),并且没有拉伸和模糊的绘图。每当我制作 100vw 和 100vh 的画布时,绘图会变得模糊和拉伸图像,尺寸不正确。
例子:
<html>
<body>
<canvas id="c" style="border: 2px solid black;"></canvas>
<style> body, html {padding: 0; margin: 0; overflow: hidden;} </style>
<script>
var c = document.getElementById("c");
var ctx = c.getContext("2d");
function draw() {
ctx.fillRect(100, 50, 100, 75);
c.style.width = document.body.clientWidth;
c.style.height = document.body.clientHeight;
}
draw();
</script>
这段代码生成了一个黑色的矩形,但是非常模糊,而且尺寸比我想象的要大得多(考虑到画布的宽度和高度是整个身体,矩形的宽度和高度只有 100 和75)。这个问题有什么解决办法吗?
谢谢。
【问题讨论】:
-
我相信这是因为您在矩形之后分配了高度。尝试将设置画布大小的两个序列放在
ctx.fillRect()之前,或者在html 元素<canvas height="100%" width="100%">上设置画布的实际高度。告诉我这是怎么回事 -
如果我用 100vw 和 100vh 设置画布样式,这会起作用吗?
-
也许,它被拉伸的原因是因为你在设置大小之前绘制了矩形,只要你在画布上绘制任何东西之前设置了大小,它就不应该被拉伸等等。跨度>
-
另外,当我将宽度和高度更改为 100vw 和 100vh 时,画布会自动调整为大约 100 x 100。这是为什么呢?
-
设置
canvas.width = window.innerWidth;和canvas.height = window.innerHeight我似乎没有得到任何模糊或拉伸
标签: javascript html canvas