【发布时间】:2012-05-01 03:52:15
【问题描述】:
我正在使用 HTML5 的画布创建一个“预览”图像,该图像主要由一些矩形和简单的线条组成。到目前为止工作正常,但有一个问题我无法以某种方式解决。假设如下情况:
context.fillStyle = "rgba(0,0,0,0.75)";
context.fillRect(100.64646,100,50.94967,20);
context.fillRect(100.64646+50.94967,100,100,20);
所以我正在绘制 2 个不透明的矩形。第一个矩形的 x-starting 坐标加上 x-length 等于第二个 rect 的 x-starting 坐标,所以理论上它们之间应该没有任何边距发生碰撞。可悲的是,结果是不同的: (见http://files.clemensfreitag.de/thin_spacing.jpg)
框之间的间距非常小,并且可以看到背景颜色。但: 如果坐标和长度为整数值,则不会出现此问题。
有没有办法通过使用浮点值来完成它?在我的应用程序中在绘制之前将它们转换为整数可能是可以接受的,但我只是想知道为什么这不适用于浮点数。
最好, 克莱门斯
【问题讨论】:
-
JS Fiddle demo 能看工作,能工作吗?这样我们就不必猜测您的整个代码/脚本。
-
当然(见jsfiddle.net/nowjab23/qjzfU/1)。我只是想知道为什么在上面的盒子组合中两个矩形之间有一定的间距,而在较低的地方,使用整数的地方,没有
-
您可能对我刚刚发表的关于在画布上定位的博文感兴趣:canop.org/blog/?p=220(这与另一个线条不规则的 SO 问题有关)。是否使用整数,或者“中间整数”实际上很重要。
-
@dystroy:谢谢!很好的主意!将把它列入我的清单,以便将来改进我的工具。
-
我在回答中详细说明了这个想法和建议。最重要的一点是清楚地弄清楚会发生什么,这样你就知道什么时候使用整数,什么时候使用整数半。
标签: javascript html canvas