【发布时间】:2010-09-07 10:09:45
【问题描述】:
我正在阅读一本关于 Html5 和画布的书,以下代码将生成 1 像素粗线...它使用 0.5 作为坐标。如果将其更改为 0 或 10,或某个整数,则线条将是灰色的,并且 2 像素粗。这是为什么?这是我最近看到的最奇怪的事情......之前在 Apple 或 Win32 API 上的所有编程,它们都是通过整数坐标进行的。
<!DOCTYPE html>
<body>
<canvas id="c" width="800" height="600"></canvas>
</body>
<script>
var c_canvas = document.getElementById("c")
var context = c_canvas.getContext("2d")
for (x = 0.5; x < 500; x += 10) {
context.moveTo(x, 0)
context.lineTo(x, 375)
}
context.strokeStyle = "#000"
context.stroke()
</script>
另一个奇怪的事情是,要获得一个 1 像素乘 1 像素的黑点,我必须为 x 绘制 0.5,但为 y 使用整数
for (x = 0.5; x < 500; x += 10) {
context.moveTo(x, 0)
context.lineTo(x, 1)
}
如果我使用以下内容,那么我会得到一个灰色的“更长的点”
for (x = 0.5; x < 500; x += 10) {
context.moveTo(x, 0.5)
context.lineTo(x, 1.5)
}
【问题讨论】: