因此,从下面的代码中可以看到,我打算加载一个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?
这个问题有点老了,但是解决方法是:
if(svgDoc.Transforms == null)
{
svgDoc.Transforms = new Svg.Transforms.SvgTransformCollection();
}
svgDoc.Transforms.Add(new Svg.Transforms.SvgScale(0.5f));