文中使用的Svg库,Svg 3.1.1
Nuget网址:https://www.nuget.org/packages/Svg/
github网址:https://github.com/vvvv/SVG,文档不太多,但是有遇到问题什么可以去Issues里提问,或没事看看他们的问题也行
安装:Install-Package Svg -Version 3.1.1
目录
简单示例
一、Text文字
1.1、Text水平方向
SvgDocument svgDocument = new SvgDocument();
Svg.SvgText text = new Svg.SvgText();
text.Text = "Depth (mbsf)";
text.FontSize = 12;
text.X.Add(cd_Start_X);
text.Y.Add(cd_Start_Y + (cd_y_len / 2) + 10 );
svgDocument.Children.Add(topLine);
1.2、Text(垂直方向),其中,SbgRotate 90则代表旋转的角度,可以是-90、45等值。SvgTranslate中第一个值就是X的值,第二个值就是Y的值。
SvgDocument svgDocument = new SvgDocument();
Svg.SvgText text = new Svg.SvgText();
text.Text = "Depth (mbsf)";
text.FontSize = 12;
//当需要垂直文字时,使用下面的代码,SvgTranslate中第一个值就是X的值,第二个值就是Y的值。
text.Transforms = new Svg.Transforms.SvgTransformCollection();
text.Transforms.Add(new Svg.Transforms.SvgTranslate(cd_Start_X, cd_Start_Y + (cd_y_len / 2) + 100));
text.Transforms.Add(new Svg.Transforms.SvgRotate(90));
//将文本对象放进文档中
svgDocument.Children.Add(text);
最终显示效果
其他实例:最终生成的svg文件:
<svg width="1000" height="1000" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xml="http://www.w3.org/XML/1998/namespace" version="1.1">
<text transform="translate(50, 240) rotate(-90, 0, 0)" id="文本20201231 133305" font-family="Arial" font-size="30" font="Arial">test -90度</text>
<text transform="translate(100, 240) rotate(90, 0, 0)" id="文本20201231 133305" font-family="Arial" font-size="30" font="Arial">test 90度</text>
<text transform="translate(150, 240) rotate(45, 0, 0)" id="文本20201231 133305" font-family="Arial" font-size="30" font="Arial">test 45度</text>
<text transform="translate(200, 240) rotate(-45, 0, 0)" id="文本20201231 133305" font-family="Arial" font-size="30" font="Arial">test 45度</text>
</svg>
效果如下:
二、Line直线
Svg.SvgLine topLine = new SvgLine();
topLine.StartX = line_Start_X;
topLine.StartY = cd_Start_Y;
topLine.EndX = line_Start_X;
topLine.EndY = cd_Start_Y + cd_y_len;
topLine.StrokeWidth = 1;
topLine.Stroke = new SvgColourServer(System.Drawing.Color.Black);
svgDocument.Children.Add(topLine);
三、Circle圆
SvgCircle circle = new SvgCircle();
circle.Content = depth.ToString();
circle.CenterX = line_Start_X + cd_x_space * count;
circle.CenterY = decimal.ToSingle(cd_Start_Y + (cd_one * Math.Abs(depth - d_minDep)));
circle.Stroke = new SvgColourServer(dotColor);
circle.Radius = settings.DotSize;
svgDocument.Children.Add(circle);
四、保存
string path = @"D:\yangjiao\justtest.svg";
svgDocument.Write(path);//保存
return path;