【发布时间】:2018-11-25 17:49:37
【问题描述】:
我想让用户在画布中旋转图像,然后拖动它来定位它。这适用于 0 度和 180 度的角度,但我无法计算出三角函数以使图像相对于画布移动,而不是相对于它的原始方向。
Demo jsfiddle:http://jsfiddle.net/jamesinealing/3chy076x/(现在更新了如下所述的修复)
摘录:
ctx.rotate(angle * Math.PI / 180);
// this is where a formula is needed to get the correct pan values based on the angle
panXTransformed = panX * Math.cos(angle * Math.PI / 180);
panYTransformed = panY * Math.cos(angle * Math.PI / 180);
ctx.drawImage(pic, panXTransformed, panYTransformed, pic.width, pic.height);
您将在此处看到,如果您在画布中单击并垂直上下拖动,图像会移向图像的“顶部”箭头,而不是跟随鼠标移动到画布顶部。换个角度试试,它会表现出一系列的行为!
我知道我需要引入一些因素来通过这样的运动来操纵 X 和 Y,但我终其一生都找不到任何有效的方法!
【问题讨论】:
标签: javascript canvas rotation draggable