【问题标题】:Transform image in svg without transforming coordinate system在 svg 中变换图像而不变换坐标系
【发布时间】:2014-12-16 13:14:33
【问题描述】:

我是 svg 的新手。我有一个要旋转的图像。我已经使用旋转变换旋转了图像,并给它一个我想要旋转图像的点的角度和坐标。

我的要求是当我在旋转后拖动图像时,我想检查左上角是否在边界区域内。这在旋转之前有效。但是在旋转之后,似乎在将这个变换应用于Image之后,我的坐标系也以相同的角度旋转。这给我带来了一些问题。

有什么方法可以在不旋转原始坐标系的情况下旋转图像?如果我旋转图像,图像的 x 和 y 属性也不会更新。

【问题讨论】:

    标签: javascript image svg rotation transform


    【解决方案1】:

    如果您将旋转后的图像放入<g> 元素中并获得该元素的边界框(即my_group.getBBox()),它将包含旋转后图像的尺寸。

    示例 SVG(我在这里使用了 rect,但它对图像也适用):

    <svg with="200" height="200">
        <g id="my_group">
            <rect id="my_rect" x="50" y="50" width="100" height="100"
                  transform="rotate(45 100 100)"/>
        </g>
    </svg>
    

    JS:

    var rect=document.getElementById("my_rect");
    console.log("rect=",my_rect.getBBox());
    // prints {x: 50, y: 50, width: 100, height: 100}
    
    var group=document.getElementById("my_group");
    console.log("group=",my_group.getBBox());
    // prints {x: 29.28932, y: 29.28932, width: 141.42135, height: 141.42135 }
    

    Demo here

    【讨论】:

      猜你喜欢
      • 2021-02-02
      • 2016-11-04
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 2013-05-22
      • 1970-01-01
      • 2013-09-22
      • 1970-01-01
      相关资源
      最近更新 更多