使用vvvv / SVG在SvgDocument中缩放点

时间:2015-01-23 02:12:21

标签: c# c#-4.0 svg vector-graphics

因此,从下面的代码中我可以看到,我打算加载一个svg文件(工作正常),然后缩放svg多边形(这是我无法弄清楚的)。我已经尝试设置路径点并在库中寻找辅助类,但我没有得到任何地方。

我刚刚意识到这可能是一个两部分问题,因为我假设下面代码中的中心是0,0。那么我如何在中心点(中心位置(宽度/ 2,高度/ 2))上缩放矢量。或者如何使用此SVG库来执行此操作。

我正在使用此库:https://github.com/vvvv/SVG

                XmlDocument doc = new XmlDocument();
                doc.LoadXml(sContent);

                var svgDocument = SvgDocument.Open(doc);
                //PointF center = new PointF(svgDocument.ViewBox.Height / 2, svgDocument.ViewBox.Width / 2);
                for (int i = 0; i < svgDocument.Path.PathPoints.Count(); i++)
                {
                    svgDocument.Path.PathPoints[i].X = svgDocument.Path.PathPoints[i].X * .5f;
                    svgDocument.Path.PathPoints[i].Y = svgDocument.Path.PathPoints[i].Y * .5f;
                }

在svg中的六角形,以防任何人需要一个或一个东西:

<polygon fill="#008000" 
    stroke="#000000" 
    stroke-width="7" 
    id="hex"
     points="382.67657470703125,2.646820068359375 509.3531494140625,256 382.67657470703125,509.3531799316406 129.32342529296875,509.3531799316406 2.6468505859375,256 129.32342529296875,2.646820068359375 "/>

编辑: 更改了我的搜索条件,并了解了如何扩展积分。但不是如何修改SvgDocument Scaling vectors from a center point?

1 个答案:

答案 0 :(得分:0)

问题有点老了,但解决方法是:

if(svgDoc.Transforms == null)
{
    svgDoc.Transforms = new Svg.Transforms.SvgTransformCollection();
}

svgDoc.Transforms.Add(new Svg.Transforms.SvgScale(0.5f));