【问题标题】:How to draw custom shaped widgets with flutter如何使用颤振绘制自定义形状的小部件
【发布时间】:2019-05-10 15:06:54
【问题描述】:

我想在flutter中画出下面的形状:

如您所见,它以一种带有直边的椭圆形开始,然后通过弯曲使其变窄。然后它进入一个矩形。在它里面,它的线条开始很细,然后逐渐变粗。第一条线弯曲以匹配形状的半径,然后它们变成矩形。

我将如何在颤动中绘制这个?在这个形状较薄的部分下方。

编辑: 抱歉,忘了说我希望能够控制红色形状的颜色。黑色形状将是永久性的,根据状态,红色形状将是不同的颜色。

【问题讨论】:

    标签: flutter drawing paint clip


    【解决方案1】:

    这看起来像是在 SVG 中最容易完成的事情,使用某种专门用于此目的的工具 - 我个人使用 Inkscape,尽管它在 svg 文件中创建了很多垃圾(我使用 SVGOMG 将其删除) .在 Inkscape 中您必须小心,以确保它不会创建不必要的分组或使用变换,而不是直接设置坐标。但是您应该可以使用flutter svg plugin 在您的应用中呈现它。

    但是,如果您想要与对象一起制作任何类型的动画,那么它会变得更加复杂。那么有两个选项 - 第一个是将您的 SVG 路径转换为画布绘制操作(有一些工具可以为 Javascript Canvas 对象执行此操作,它们与颤动的对象足够接近,您可以将路径粘贴到其中,然后运行快速搜索/替换以获得颤动所需的内容)。在制作 svg 插件之前,我已经使用我的应用程序中使用的一些图标来做到这一点。但如果你这样做了,那么你就可以完全控制如何绘制它——你可以随意使用渐变、颜色等。

    您也可以直接使用画布绘制它,而无需先使用 SVG。看看CustomPainterCustomPaint。热重载会帮助你,但如果你以前没有使用过 Beziers 等,这将是一个学习曲线(有点双关语)。

    但是,这将是一个过程,并且可能不值得,因为那里有更简单的解决方案。看看newly re-announced Flare——主要的缺点是除非你想付钱,否则你的作品将是公开的(但你可以阻止人们分叉它)。虽然我还没有广泛使用它,但它似乎是为这类事情量身定做的。

    【讨论】:

    • 感谢您的信息。对不起,我忘了先说这个,我可以根据状态改变不同形状的颜色吗?
    • 如果您使用纯 SVG 和 svg 插件,则不会。如果您自己绘制(从转换后的 SVG 或只是自己绘制),绝对可以。而且我很确定 Flare 也支持更改颜色,但我不是 100% 确定这一点 - 我认为您需要做的是设置一个更改颜色的动画,然后为对象设置动画以具有颜色变化。
    猜你喜欢
    • 2018-09-13
    • 2020-05-09
    • 1970-01-01
    • 2021-10-23
    • 2022-07-27
    • 2021-04-05
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    相关资源
    最近更新 更多