【问题标题】:Create a Tapered Stroke创建锥形描边
【发布时间】:2011-11-17 04:23:22
【问题描述】:

Manga Studio 等一些绘画程序包含在笔触末端逐渐变细的笔刷。我对如何实现它有一些想法,但我的想法对我来说似乎有问题/效率低下......我无法通过谷歌找到有关此任务的任何信息,所以我想我会在这里问。

有人知道在 AWT 中创建锥形笔划的任何算法吗?

我需要弄清楚的是如何将我已经拥有的鼠标坐标从鼠标事件(例如 (x50,y50)-(x37,y20)-(x47,y10) 转换为 Path2D.curveTo() 或那种性质的东西。你如何计算逐渐变细的行程? (我不认为没有相当多的数学可以做到这一点......虽然我想我可能是错的。)

谢谢!

编辑:请注意,允许用户使用此笔画在图像上徒手绘制,这意味着笔画的边必须弯曲以匹配用户的笔。

【问题讨论】:

    标签: java graphics drawing awt stroke


    【解决方案1】:

    Polygon 是个不错的选择。正如实现Shape 接口一样,createStrokedShape() 可用,如图here。可以应用AffineTransform 来旋转、平移或缩放对象,如herehere 所示。这些示例可以帮助您判断性能。

    附录:虽然我还没有尝试过,Arc2D 可能是一个合理的替代旋转Polygon。一个相关的QuickDraw primitive曾经给了可敬的MacDraw一个与众不同的shape for arrowheads

    【讨论】:

    • 谢谢。不幸的是,这对我的情况并没有真正的帮助。这是一个允许用户在图像上徒手绘制的界面,因此笔划的边必须弯曲,这使得任何直接使用 Polygon 都成为非选项。我想我可以使用带有额外点的多边形作为基础,然后复制每个点并根据下一个手绘点的位置对其进行旋转,然后再将其添加到 Path2D,但这让我回到了开头,看起来像非常复杂,可能效率低下的解决方案。
    • 您可以使用任何Shape,可能是路径或曲线之一。
    • 问题不在于“哪些对象”...我已经在使用各种形状对象,并且已经使用 Path2D 实现了画笔。但这并不能回答如何有效地计算/绘制与笔划变细有关的曲线的问题。我需要的是 Path2D.curveTo(x1, y1, x2, y2) - 如何将鼠标坐标转换为 curveTo 方法中的参数?这可能不是正确的方法——它可能是 cubeTo 或 quadTo,但我的挑战是数学。感谢您的建议,寿! :D
    • 有什么可以使用的here
    • 谢谢你!那是朝着正确的方向前进...但是我现在有点累了,不知道乍一看是否有用...当我已经睡了一会儿。
    猜你喜欢
    • 1970-01-01
    • 2016-05-03
    • 2015-05-06
    • 2015-07-23
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    相关资源
    最近更新 更多