gpt4 book ai didi

raphael - 获取 Raphael 元素的完整当前转换状态(作为对象或字符串)

转载 作者:行者123 更新时间:2023-12-02 00:04:16 24 4
gpt4 key购买 nike

我找不到简单答案的简单问题。

如何查看 Raphael 元素的完整当前人类可读(非矩阵)变换状态,无论该元素的变换状态是否设置或如何设置?


例如,使用 element.transform() 不会为您提供完整转换状态:

1:如果矩阵设置了一些东西,它不会给你非矩阵状态。例如。这里元素已经缩放为等同于 s2,2 但是当我们解析结果时没有 s 数据:

circ = paper.circle(50,50,50);
circ.transform('m2 0 0 2 0 0');
console.log(circ.transform(''));

2:如果没有设置某些东西,它是未定义的,而不是给我们默认的数值。例如。这里没有 s 数据,而我希望有一些东西可以告诉我们比例状态等同于应用 s1,1:

circ = paper.circle(50,50,50);
circ.transform('t100,100');
console.log(circ.transform(''));

最佳答案

这是我能找到的最接近的 - 记录在这里因为它不明显。在路径、圆、椭圆、矩形上测试。不适用于集合(因为集合不直接转换,它们只是将转换应用于其内容的美化数组)。


获取 Raphael 元素的完整当前变换状态作为对象:

element.matrix.split();

该对象的内容是(对于未转换的元素显示默认值):

dx: 0
dy: 0
isSimple: true
isSuperSimple: true
noRotation: true
rotate: 0
scalex: 1
scaley: 1
shear: 0

因此,要查找 Raphael 元素的 x 比例条件,您可以使用 element.matrix.split().scalex;。要独立于设置元素的方法来查找元素的旋转状态,您可以使用 element.matrix.split().rotate; 等。dxdy 等同于翻译值。

circle = paper.circle(5,5,5).attr('transform','s2,2');
alert(circle.matrix.split().scalex); // alerts 2
alert(circle.matrix.split().dx); // alerts 0

circle = paper.circle(5,5,5).attr('transform','m2 0 0 2 0 0');
alert(circle.matrix.split().scalex); // alerts 2
alert(circle.matrix.split().dx); // alerts 0

circle = paper.circle(5,5,5).attr('transform','t100,100');
alert(circle.matrix.split().scalex); // alerts 1
alert(circle.matrix.split().dx); // alerts 100

要获取 Raphael 元素的当前变换状态作为变换字符串,最接近的似乎是:

element.matrix.toTransformString();

...但是,这仅包括已应用的转换。例如如果没有缩放,则字符串中没有 s 段,而不是像 s1,1,0,0 这样的任何默认缩放转换字符串。

同样,如果你这样做......

Raphael.parseTransformString( element.matrix.toTransformString() );

...您得到一个缺少未设置值的数组,而不是一个包含所有值的对象。

好像没有什么方便的函数可以把element.matrix.split()的输出转过来;转换成一个转换字符串(尽管可能不需要)。

关于raphael - 获取 Raphael 元素的完整当前转换状态(作为对象或字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19364848/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com