【发布时间】:2014-08-29 17:35:22
【问题描述】:
由于我在画布的默认 scale() 函数中遇到了一些舍入问题*,因此我为画布实现了自己的矩阵变换。这工作正常,唯一的例外是,我无法旋转图像,因为 drawImage() 函数只能用图片的左上角参数化。
还有其他方法可以在画布上绘制图像吗?一种方法,至少可以用左上角和右下角的坐标参数化?,这样我就可以手动旋转坐标了?
*问题是缩放比例
【问题讨论】:
-
您可以在 drawImage() 之前使用 Context2D.transform(... whole matrix ...)。一切都应该工作。有什么问题?
-
context.rotate 没有其他选择。也许尝试修复那 1 个像素的差距?
-
1 像素间隙是由浮点数缩放整数产生的。如果您将 1 缩放 1/3,您最终会得到 0.333333……但像素是离散的。我在矩阵中有 1/3,所以如果我使用 Context2D.transform() 而不是 scale(),我认为它不会解决问题。我必须对转换的结果进行四舍五入(矩阵乘法)。
-
一个选项:将drawImage的宽度和高度增加1/2像素。
-
是的,将矩形(或图像)的大小增加 1/2 像素以适应间隙。
标签: javascript html canvas