为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Path2D(或任何形状抽屉)在 Java 中绘制 SVG 路径点?

如何使用 Path2D(或任何形状抽屉)在 Java 中绘制 SVG 路径点?

www说 2022-07-14 10:09:52
我一直在寻找一种从 a 中获取点SVG并将其应用于Path2D画家的方法。解析任务不是我的重点,问题是了解这些点如何在画布中工作以及如何将其应用于Path2D.例如,考虑我有这个SVG标签:<svg>    <path d = "    m 51.688 5.25    c 10 20 30 40 50 60    z">    </path></svg>这只是将抽屉移到第一个点,使用这些点绘制一条曲线并关闭路径。我试图将其应用于这样的Path2D:float x = 200, y = 200;Path2D.Float painter = new Path2D.Float();painter.moveTo(51.688+x, 5.25+y);painter.curveTo(10+x, 20+y, 30+x, 40+y, 50+x, 60+y);painter.closePath();由于来自的点SVG是亲戚,因此我将 x 和 y 字段相加为点,但我得到了这个结果: 在此处输入图像描述这只是一个小测试来检查绘图是否有效,我需要将它用于更复杂的路径,因为我需要绘制多达 50 个 SVG 路径Batik不是一个好方法,考虑到只渲染一个 svg 图像太慢了我的项目。然后我需要知道的是是否可以像这样直接使用它的点来绘制 SVG 路径。如果是,如何解决我的想法?如果没有,如何绘制路径的好方法?ps:我的目标是swing。
查看完整描述

1 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

如果您想了解 SVG 路径命令的工作原理,最好的来源是阅读SVG 规范。那里都解释得很清楚。我不知道你为什么先来这里问。


小写路径命令(如c)是相对的。它们的坐标应被视为距最后一个路径段的终点的偏移量。


所以相当于你的路径描述应该是:


painter.moveTo(51.688, 5.25);

painter.curveTo(51.688 + 10, 5.25 + 20, 51.688 + 30, 5.25 + 40, 51.688 + 50, 5.25 + 60);

painter.closePath();

(为了清楚起见,我在这里省略了你的x和参数)。y


查看完整回答
反对 回复 2022-07-14
  • 1 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信