如何通过坐标计算HTML Canvas中的变换

时间:2014-07-14 08:35:11

标签: javascript html html5 canvas html5-canvas

我有一个带有我加载的图像的HTML画布。图像的大小(宽度,高度)。我得到2个坐标 - (x1,y1)和(x2,y2) - 这些是目标变换的左上角和右上角。

我需要做的是拍摄原始图像,将其左上角放入(x1,y1)并对其进行转换,使得右上角位于(x2,y2) - 我想这需要一个倾斜变换。

问题是如何计算右倾斜将右上角准确地放在(x2,y2)中。 将左上角放在(x1,y1)中需要一个简单的转换变换 - 没有问题。

非常感谢,

请参阅附图:

enter image description here

2 个答案:

答案 0 :(得分:1)

您必须使用setTransform才能扭曲图像。

ctx.setTransform ( scaleX, skewX, skewY, scaleY, transX, transY ) ;

你想改变skewX,所以当x = =到宽度时,y由targetSkew改变,所以:

skewX =  targetSkew / width 

http://jsbin.com/kivoraqa/1/edit?js,output

function fillRectSkewed(x,y,w,h,sk) {
  ctx.save();
   var skewRatio=sk/w;
   ctx.setTransform(1,skewRatio,0,1, x,y);
   ctx.fillRect(0, 0, w,h);
  ctx.restore();
  }

fillRectSkewed(40,40, 80,40, 20);

enter image description here

在您的情况下,请调用fillRectSkewed(x1,y2,imageWidth,imageHeight,y1-y2);

答案 1 :(得分:0)

您可以使用MSpaint获取(X,Y)的坐标,或者您可以使用此网站更容易参考 Image mapping generator