Text 如何避免svg中的文本缩放

Text 如何避免svg中的文本缩放,text,svg,zooming,Text,Svg,Zooming,如果我在画布上有几条线(块、多边形等),我希望它们的笔划宽度在放大时保持不变 例如,我有一张温度与时间的图表,在时间轴上有一条小直线来标记每一个小时——所以当我放大时,它们之间的距离会增加,但我不希望它们变得更厚 然后我可以为t轴对象提供属性向量effect=“非缩放笔划” 但是假设我有几个文本 例如,每24小时有一个日期写在旁边 那么,似乎没有办法阻止文本被拉伸;i、 e.我无法提供属性text effect=“非缩放文本” 在我的例子中,我只放大了一个维度,拉伸的文本很难看,而挤压的文本是不

如果我在画布上有几条线(块、多边形等),我希望它们的笔划宽度在放大时保持不变

例如,我有一张温度与时间的图表,在时间轴上有一条小直线来标记每一个小时——所以当我放大时,它们之间的距离会增加,但我不希望它们变得更厚

然后我可以为t轴对象提供属性向量effect=“非缩放笔划”

但是假设我有几个文本

例如,每24小时有一个日期写在旁边

那么,似乎没有办法阻止文本被拉伸;i、 e.我无法提供属性text effect=“非缩放文本”

在我的例子中,我只放大了一个维度,拉伸的文本很难看,而挤压的文本是不可读的

有什么解决办法吗

根据要求,这里有更多的细节

我在画布上画了一个比观察区域宽得多的图形(如果缩放,它会变得更宽)。提供了滑块,以便查看者可以平移和缩放以详细检查其中的任何部分

因此有两个对象graphobj来自应用程序数据和tlineobj,tlineobj是时间轴,它由一条画布长度的线组成,用短竖线标出小时,用大竖线标出每天的开始。因此,每次浏览者更改滑块时,它都会遵循以下内容

tlineobj.setAttribute(“transform”、“translate”(“+someamount+”,0)、“scale”(“+someamount+”,1)”)

ans同样适用于
graphobj
。 所以我把它水平伸展,但不是垂直伸展

现在,
tlineobj
由Javascript例程构造。为了简单起见,忘掉日期和月份的名称,让我们只在适当的地方写上日期。所以我写了一个函数,比如:

Function doDate(i) {
    dayno = some_model.cloneNode(false)
    dayno.appendChild(document.createTextNode(i))
    dayno.setAttribute("x", i*some_factor)
    tlineobj.appendChild(dayno)
}
但是现在当
tlineobj
被缩放时,不仅
dayno
s之间的距离增加了(这是我们想要的),而且每个
dayno
本身都会被拉伸,因为没有办法告诉SVG缩放机制不要这样做(尽管有这样一种机制可以对向量对象执行此操作)


我能看到的唯一方法是,每次重新缩放图形时,使整个
tlineobj
从头开始重新生成,这似乎是一种非常困难的方法(或者我可以遍历所有
dayno
对象并更改其中的某些属性,但这同样糟糕).

我认为这是一个好问题,但我认为为人们提供一些示例代码/标记会很有用。可能是strokewidth=strokewidth/zoomfactor类型的东西?如果没有看到任何示例代码,很难说,但如果文本和笔划不需要是动态的,有一种方法可以概述。很难提供示例当您不知道要编写什么代码时,请使用le代码:-(。但是我可以提供有关我的设置的更多信息,因此我相应地扩展了这个问题。