我注意到一些 canvas2d 方法似乎有一个令我惊讶的特性。特别是context.lineTo(x, y)
和context.drawImg(imgObj, x, y)
方法。我原以为 x,y 坐标只能采用整数,但如果我将它们作为浮点数给出,似乎会发生一些特别的事情 - 浏览器似乎神奇地调整了图形组件边缘像素的颜色以进行绘制它们“介于”两个离散的相邻像素坐标之间。
例如,假设我的笔画颜色是黑色,然后我调用context.lineTo(100.2, 0)
. 我会得到一条漂亮的黑线,它指向 x 坐标 100,但坐标 101 处的像素也被绘制了,但它被绘制为灰色阴影,似乎与 x 坐标的小数部分相对应(例如,深灰色context.lineTo(100.4, 0)
)
我做了一个 jsfiddle 演示
我在其中对图像和线条进行动画处理以直观地展示效果。在这两种情况下,下部图像和下部线都是通过将浮点参数传递给画布方法来设置动画的——您可以看到它们是如何非常平滑的,因为浏览器正在发挥它的魔力。在高显示器分辨率下很难看到线条效果,但它就在那里。该图像令人印象深刻,因为它不仅融合了边缘,而且似乎完全意识到了透明度。
Opera、firefox 和 chrome 似乎都可以做到这一点。
我的问题:
这是否记录在任何浏览器/规范中?
有这个术语吗?
我想将其称为某种形式的抗锯齿或插值,但我认为这两个术语中的任何一个都不正确。我想知道它叫什么。