gpt4 book ai didi

svg - 在 dart :svg 中创建路径

转载 作者:行者123 更新时间:2023-12-04 15:45:36 31 4
gpt4 key购买 nike

我是使用 Dart 的新手,我一直在尝试移植一些与 svg 一起使用的 javascript 代码,创建一个包含一些段的路径,但我正在努力理解它的 API 是如何工作的.

以下代码不会运行,但它可能说明了我想做的事情:

Element i = query("#divsvg");
svg.SvgSvgElement s = new svg.SvgSvgElement();
i.append(s);

svg.PathElement p = new svg.PathElement();
p.pathSegList.add(
p.createSvgPathSegArcAbs(200, 200, 50, 50, 180, false, false)
);

s.children.add(p);

但是,据我从文档中了解到:
  • createSvgPathSegArcAbs 创建一个非父路径段
  • pathSegList 是最终的,所以你不能在构建后添加它
  • PathElement 构造函数似乎没有任何参数

  • 我是否遗漏了有关 Dart 工作原理的内容,或者 svg 库文档中的内容?我花了几个小时查看文档、谷歌搜索和查看测试,但我没有发现任何似乎涵盖这一点的内容(测试似乎使用 HTML 代码而不是 API 创建东西)。

    任何将我指向正确方向的东西都将不胜感激!

    更新

    我花了更多时间查看函数,并且 pathSegList 的“最终性”不应该阻止它被更改(它不是 const),只是被替换了。

    但是,如果您尝试调用它们,诸如“add”之类的各种函数会在异常情况下显式实现,而一些函数(如 append)则是 native 实现的。

    根据调试器:
    p.pathSegList.append(
    p.createSvgPathSegArcAbs(200, 200, 50, 50, 180, false, false)
    );

    将附加路径段,但这不会出现在“innerHTML”属性中,也不会出现在最终页面 HTML...

    我开始认为 svg 支持还不是“完成”,我有点想移植到 Canvas 和/或 WebGL。

    最佳答案

    我能够使用 appendItem 创建一个路径元素并向其添加路径段。 PathSegList的方法:

    var div = query('#container');
    var svgElement = new svg.SvgSvgElement();
    div.append(svgElement);
    path = new svg.PathElement();
    svgElement.append(path);

    segList = path.pathSegList;

    segList.appendItem(path.createSvgPathSegMovetoAbs(50, 50));
    segList.appendItem(path.createSvgPathSegArcAbs(200, 200, 50, 50, 180, false, false));
    segList.appendItem(path.createSvgPathSegClosePath());

    关于svg - 在 dart :svg 中创建路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16145568/

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