HTML5用画布绘图,旋转线?

时间:2014-12-28 22:09:38

标签: javascript html5 canvas

开发一个开源项目,我们有HTML5画布旋转工作图像和文本 - 但我无法弄清楚形状有什么不同。

源文件:https://github.com/kageurufu/FaceMaker/blob/master/js/facemaker.render.js

第239行:

  case FM.ShapeTypes.square:
  case FM.ShapeTypes.line:
    //As far as I can tell, a line is just a rect, and a square is really a rect
    if (layer.shape_opt === 0) {
      c.fillRect(x, y, fm.parseInt(layer.width), fm.parseInt(layer.height));
    } else {
      c.strokeRect(x, y, fm.parseInt(layer.width), fm.parseInt(layer.height));
    }

这适用于绘制动态线宽所提供的变量:x,y,width,height。

但是,我们有一个0..360的旋转变量,如果> 0它需要应用。对于图像和字体,我们在第298行旋转画布:

c.save();
c.translate(x, y);
c.rotate(rotation * (Math.PI / 180));
// draw here
c.restore();

然而......我无法弄清楚如何用线条做到这一点。我在这里阅读了其他相关问题 - 但没有理解如何调整形状的来源。

1 个答案:

答案 0 :(得分:1)

围绕其中心点旋转线条:

  1. 计算线条的边界框:minX,minY,maxX,maxY

  2. 转换为边界框中心点:translate(minX +(maxX-minX)/ 2,minY +(maxY-minY)/ 2)

  3. 根据需要旋转

  4. 首先解除旋转&然后翻译画布。