使用viewBox调整SVG大小(在Dart中)无效

3

我最近开始使用Google Dart(www.dartlang.org)并玩弄SVG。 我试图使用viewBox将生成的SVG缩放以适应<div>

StackOverflow上的人们已经给了我很多帮助。
现在我能够像这样缩放路径:Dart create and transform an SVG path

但是似乎viewBox是用于缩放到合适大小,使用它可以避免我分别缩放SVG中的所有路径。这就是为什么我想使用viewBox的原因。
我尝试了以下内容:

    // get bounding box of the created svg
    Rect bb = path.getBBox();

    // create a viewBox for the svg to fit in the div
    var viewBox = svg.viewBox.baseVal
    ..x = bb.x
    ..y = bb.y
    ..width = bb.width
    ..height = bb.height;

    // center the image inside the div
    svg.preserveAspectRatio.baseVal
    ..meetOrSlice = PreserveAspectRatio.SVG_MEETORSLICE_MEET
    ..align = PreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMID;

但是没有进行任何缩放操作。 我该如何解决这个问题?

1个回答

5

在写这个问题并确认在此之前进行了一切尝试时,我找到了以下解决方案。

看起来Dartium(带有本地Dart虚拟机的Chrome)存在一个bug(issue 12224),导致对视口框的更改不会直接反映出来。

在对视口框进行更改后添加以下代码,可以强制Dartium以某种方式调整为所请求的大小:

    // add an empty ```<g>``` element to force svg resize
    SvgElement g = new SvgElement.tag('g');
    svg.append(g);

这个问题似乎已经被解决了,这个黑客技巧不再需要。 - Hendrik Jan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接