【问题标题】:Position images along a Bézier curve沿贝塞尔曲线定位图像
【发布时间】:2011-11-22 03:22:15
【问题描述】:

我们目前有一个动态图像,其中包含根据用户输入创建的文本。此文本遵循贝塞尔曲线来定义其位置和旋转。

由于各种原因,需要将文本更改为一组图像,因为字体需要非常具体。因此,我们将为字母表中每个允许的字符创建一个 PNG。因此,如果用户输入“TEST”这个词,系统会拉出字母 T、E、S 和 T,并将它们并排放置。这部分不是问题。

问题是强制每个图像遵循与使用 graphics.DrawString 的文本相同的 Bézier 曲线。图像必须正确定位,理想情况下也应正确旋转。

这可能吗?如何做到这一点?

【问题讨论】:

    标签: c# .net gdi bezier


    【解决方案1】:

    快速的回答是你“简单地”

    但即使这样也无法获得相当好看的图像。通常您需要对每张图像应用非线性变换,以便远离曲线的部分与靠近曲线的部分具有不同的宽度,具体取决于曲率和凸度。

    This site explains many of the details by decomposing the outline of an image in paths

    但是,正如前面的链接我肯定开始展示的那样,这是一个计算密集型的过程。相反,您可能会发现简单地将图像转换为字体并使用以前使用的方法要容易得多。该解决方案将依赖一些第三方工具进行转换,我不愿提出建议。但是,一个方向(在许多方向中)是使用像开源Inkscape 这样的光栅到矢量图形工具,并从矢量图形输出创建您的字体。此方法的缩放效果最好,但可能涉及将输出转换为首选字体格式(如 True-Type)的单独步骤。

    【讨论】:

    • 我不认为我可以使用字体,因为有时一个字母可能有不同的图标。这就是我们选择使用一系列图像的原因。您是否知道任何可能执行我正在寻找的代码示例?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 2021-10-30
    • 2011-03-10
    • 1970-01-01
    相关资源
    最近更新 更多