我有一个黄色的画布,里面画了一个红色的矩形。 但是,我注意到一个有趣的效果 - 边框上的矩形的两边有非常明确的边缘,而黄色画布内部的矩形的两边是"软化"或"模糊"。
这就是我现在拥有的:
我的HTML:
<canvas id="myCanvas">
</canvas>
使用Javascript:
var canvas=document.getElementById("myCanvas");
var ctx=canvas.getContext("2d");
ctx.fillStyle="#FF0000";
ctx.fillRect(0,0,150,75);
CSS:
#myCanvas {
background-color:#FFFF00;
width:1000px;
height:600px;
border: none;
margin-left:auto;
margin-right:auto;
}
JSFIDDLE 的
为什么会这样?我怎样才能使矩形的所有四边都非常精确和定义?谢谢。
答案 0 :(得分:8)
您应该像这样设置画布大小:
<canvas id="myCanvas" width="1000" height="600"></canvas>
这是demo
或来自javascript:
var canvas = document.getElementById("myCanvas");
canvas.width = 1000;
canvas.height = 600;
从CSS设置大小只是缩放不是你想要的画布!
答案 1 :(得分:2)
你的CSS是拉伸你的画布,而不是定义它的大小导致它模糊。像在anelkkhatri中那样在HTML中定义画布大小,或者您可以在Javascript中定义它,请参阅下面的jsfiddle。
var canvas=document.getElementById("myCanvas");
canvas.width = 1000;
canvas.height = 600;
var ctx=canvas.getContext("2d");
ctx.wdith=1000;
ctx.fillStyle="#FF0000";
ctx.fillRect(1,1,150,75);
答案 2 :(得分:1)
可能它从某种尺寸缩放。 更新:它从默认的300x150 (canvas on mdn)
缩放尝试直接在canvas元素上设置width height。
<canvas id="myCanvas" width="400" height="200"></canvas>
并且不要使用CSS
调整大小#myCanvas {
background-color:#FFFF00;
border: none;
margin-left:auto;
margin-right:auto;
}
答案 3 :(得分:1)
对于在动态调整画布大小时遇到此问题的任何人,请尝试将imageSmoothing参数更改为false
context = canvas.getContext("2d");
context.imageSmoothingEnabled = false;
答案 4 :(得分:0)
另外请确保您没有在CSS中设置画布不透明度,在我的情况下,这会导致模糊。在fillStyle上移动到RGBA修复它。