1

我是 Diagrams 的新手,所以我一直在阅读文档,并且遇到了Normalized units。这正是我认为我想要的。

我正在创建一个图表,在许多其他图表周围有几个边界框。该图非常大,所有这些内图在整个图的视图中都无法阅读。所以我想在这些边界框上放置一个标准化的 FontSize 文本作为标题,并且我希望这些标题足够大以便在缩小时阅读。但是,当您放大这些边界框之一时,我希望标题的像素宽度保持不变,而不是增长到疯狂的大小。

这是我的标题:

header = frame 5 $ fontSize (normalized 0.05) $ p $ "Number of classes: " ++ (show $ length types)

在 Chrome 中呈现时,我尝试了两件事来使用 JS 来操纵 svg 的比例。

function zoom(){
    [x, y, w, h] = svg.getAttribute("viewBox").split(' ').map(Number);
    let newViewBox = `${x} ${y} ${w * 0.9} ${h * 0.9}`
    svg.setAttribute("viewBox", newViewBox); // And also: setAttribute("transform", "scale(1.5)")
}

这可以正确缩放,但令我惊讶(和恐惧)的是,标准化文本也会缩放。

现在,我担心规范化属性,仅在由 SVGBackend 呈现时才有效,实际上并不是整个 SVG 识别的东西。

我只是做错了什么,还是有其他方法可以实现我想要的?

4

1 回答 1

1

现在,我担心规范化属性,仅在由 SVGBackend 呈现时才有效,实际上并不是 SVG 整体识别的东西。

是的,这正是问题所在。我不确定如何/是否可以制作一个在缩放时表现出你想要的方式的 SVG。

于 2020-03-06T21:30:21.077 回答