【发布时间】:2012-03-06 01:59:00
【问题描述】:
我正在为一个项目使用画布,并且我有一些我正在倾斜的元素。我只是在 y 值上倾斜,只是想知道倾斜后图像的新宽度是多少(所以我可以将它与另一个画布元素对齐)。查看下面的代码以了解我的意思
ctx.save();
//skew the context
ctx.transform(1,0,1.3,0,0,0);
//draw two images with different heights/widths
ctx.drawImage(image,0,0,42,60);
ctx.drawImage(image,0,0,32,25);
目标是知道 42 x 60 的图像现在是 X x 60 的图像,因此我可以在将其绘制为 0,0 之前进行一些翻译。单独测量每个图像很容易,但是我在整个项目中有不同的倾斜值和高度/宽度需要对齐。目前我使用此代码(适用于 25 到 42 宽度之间的图像):
var skewModifier = imageWidth*(8/6)+(19/3);
var skewAmount = 1.3; //this is dynamic in my app
var width = (skewModifier*skewAmount)+imageWidth;
随着图像变得更宽,尽管这个公式很快就崩溃了(我认为这是一个倾斜的公式,而不是像这样的直值)。关于画布对倾斜有什么想法?
【问题讨论】:
-
我想我可以这样澄清。给定一个宽度和高度,你能知道图像倾斜到 X 时的新宽度吗?(看起来高度也有影响,即使它只是水平倾斜)。
-
好吧,我越来越近了。我现在发现,如果我得到图像的对角线长度并将其乘以我的倾斜,我就非常接近正确的值。还没有完全到那里。有什么想法吗?
-
你真的是指
ctx.transform(1,0,1.3,0,0,0);而不是ctx.transform(1,0,1.3,1,0,0);? -
是的,我是从我的代码中复制的,实际上我使用 -1 来翻转画布。与这个问题无关,所以我删除了所有额外的位。
标签: javascript html canvas drawimage