使用vvvv / SVG在SvgDocument中缩放点

问题描述 投票:2回答:1

因此,从下面的代码中可以看到,我打算加载一个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 "/>

编辑:更改了我的搜索条件,并找到了如何缩放点。但不是如何修改SvgDocumentScaling vectors from a center point?

c# c#-4.0 svg vector-graphics
1个回答
0
投票

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

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

svgDoc.Transforms.Add(new Svg.Transforms.SvgScale(0.5f));
© www.soinside.com 2019 - 2024. All rights reserved.