我的任务是开发一个算法,将不同种类的曲线拟合到给定的二维点序列上。
为了测试我的算法,我选择使用SVG来显示结果。但我遇到了几个问题。
由于我的算法可能有非常不同的输入和输出,因此能够缩放查看生成的SVG文件是至关重要的!
但是,在SVG中,路径只能以一定的宽度显示。如果我放大缩小,则路径的宽度会变宽。我希望在所有缩放级别下,宽度都为1像素。是否有解决方案?
另外:SVG能否显示点?是的,简单的原始点?我发现它不能。
谢谢。
stroke-width:"1%"
@Zoli:在你的评论之后,我正要建议你研究PostScript,这样你就可以使用毛细线描边宽度,但是当我遇到SVG规范中的非缩放描边向量效果时,我改变了主意:
vector-effect="non-scaling-stroke"
根据规范,只需将此添加到您的曲线中,它就应该对缩放不变。他们的示例使用line
,但它也适用于您的曲线。
目前在SVG中没有像<point>元素或类似的东西,但是SVG WG已经讨论过添加它,所以它可能会在未来被包含。请随时向公共SVG邮件列表www-svg@w3.org发表您对<point>元素的需求和要求。
一种解决方法是使用例如<line>元素,并使它们长度为零,如果需要可以使用圆形线帽使其显示为点。这完全取决于您需要什么。半径为0的圆可能更适合。
值为“non-scaling-stroke”的“vector-effect”属性是您应该用于指定描边不应缩放的属性。如果本地不支持“vector-effect”,则实现确保笔画正确缩放的JavaScript解决方案并不困难。Opera 9.5+本地支持它。
感谢Naaff的帮助。 我想我会继续使用Firefox,并且我会在生成的SVG文件中为每个算法执行指定线宽。这对我来说是足够的。