【问题标题】:How to use a Matrix with RaphaelJS如何在 RaphaelJS 中使用矩阵
【发布时间】:2015-12-17 04:43:01
【问题描述】:

我想移动一个 RaphaelElement 并创建一个简单的测试用例:

var paper = Raphael(0, 0, 500, 500);
var rect = paper.rect(50, 50, 100, 100);
rect.attr("fill", "blue");
rect.matrix.translate(300, 300);

但矩形没有移动。起初我认为矩阵可能没有正确更新并尝试了这个:

//...
alert("" + rect.matrix.x(0,0)); // prints 0
rect.matrix.translate(300, 300);
alert("" + rect.matrix.x(0,0)); //prints 300

显然矩阵发生了变化,但矩形并不关心这一点。因此我将代码更改为:

 rect.matrix=rect.matrix.translate(300,300);

但这要么使程序崩溃,要么根本没有效果。 似乎我缺少某种更新方法,将矩阵应用于 RaphaelElement。看起来像这样的东西:

rect.updateMatrix();

我在文档中搜索过,但没有找到这样的方法。 RaphaelJs 中矩阵的规范用法是什么?

【问题讨论】:

    标签: javascript graphics web svg raphael


    【解决方案1】:

    rect.translate(300, 300) 将应用翻译或rect.transform("t300,300")

    还有

    rect.transform(['m',mat.a, mat.b, mat.c, mat.d, mat.e, mat.f]);
    

    可用于将现有矩阵(垫子)应用于矩形。

    【讨论】:

    • rect.translate 已弃用,rect.transform 接受字符串。由于我的应用程序中会有很多动作,我想避免使用变换。如果矩阵不可用,他们为什么要提供矩阵?
    • 嘿,我刚刚意识到你也回答了我的另一个问题。关于如何在 Raphael 中应用变换。您提供了矩阵作为解决方案。您能否发布一些代码,如何使用矩阵移动 RaphaelElement ?那太好了
    • 我认为矩阵是只读的,我怀疑它是元素转换的合并矩阵。
    • 那我应该如何使用矩阵来替换变换方法?
    • rect.transform("m1,2,3,4,5,6") 或者你需要问一个更清楚的问题。
    【解决方案2】:

    我在 Stackoverflow 上找到了另一个参考资料,它在解释矩阵方面做得非常出色。它解决了我的问题。

    StackOverflow Matrix clarification

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多