You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带预旋转变换的SVG元素按比例缩放功能异常问题求助

带预旋转变换的SVG元素按比例缩放功能异常问题求助

问题场景

我自己写了个小SVG插件,想实现拖拽每个矩形、圆形右上角的小方块,来按比例缩放对应的元素。红色元素的缩放效果都正常,但蓝色元素就出问题了。

我想要的理想效果是:以元素的左下角为原点,按比例缩放元素,但蓝色元素在缩放时还会额外发生旋转偏移。

蓝色元素本身已经带有旋转变换:
matrix(1 -0.5 0.5 1 0 0)
而红色元素都是默认的无变换状态:
matrix(1 0 0 1 0 0)

我目前用的缩放计算公式如下:

  • 新的m(a) = 旧的m(a) × dx或dy中变化量更大的那个值作为比例因子
  • 新的m(d) = 新的m(a) // 保持宽高比例一致
  • 新的m(e) = (旧的m(a) - 新的m(a)) × 元素旧的x坐标 + 旧的m(e) // 调整垂直位置
  • 新的m(f) = (旧的m(d) - 新的m(d)) × (元素旧的y坐标 + 旧的高度) + 旧的m(f) // 调整水平位置

疑问

我猜测是蓝色元素自带的预旋转变换导致了这个问题,但实在搞不懂背后的原因——毕竟我只是调整了变换矩阵里的平移参数(m(e)和m(f))而已啊...

备注:内容来源于stack exchange,提问作者Lain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 15:04:29