SvgNet is a C# library designed to facilitate the processing and particularly the creation of SVG documents in C#. The project homepage is here. Source on the homepage may be more recent than The Code Project copy.
What it does
SvgNet consists of the following parts:
Classes to represent SVG elements and SVG types
SvgNet contains a family of classes that represent SVG elements (e.g. ellipse or tspan) and SVG types (e.g. a transformation list, a style, or a path description). The SVG types are provided with operators to make constructing and modifying SVG documents easy. For example, to change some properties of a style you can do:
myEllipse.Style = new Style("fill:red");
myEllipse.Style.Set("opacity", 0.5);
myEllipse.Style += "stroke:black";
Classes to read, write and copy SVG scenes
To get an SVG string from a tree of SVG elements you have created is as simple as this:
SvgElement myRootElement = SvgFactory.ReadSvgString(s);
s = myRootElement.WriteSvgString();
XML output can use entities to reduce the size and increase the legibility of the document.
The SvgFactory class also contains methods to make a deep copy of any SVG node and its descendants. All SVG types and elements are cloneable.
The Svg-Gdi bridge
The SvgGdi bridge is a set of classes that use SvgNet to translate between SVG and GDI+. What this means is that any code that uses GDI+ to draw graphics can easily output SVG as well, simply by plugging in the SvgGraphics object. This object is exactly the same as a regular .NET Graphics object, but creates an SVG tree. Even things like hatched fills and line anchors are implemented. The irritatingly old-fashioned 'current transformation' system of GDI+ is implemented by creating nested SVG group elements, resulting in SVG output that's a bit cleaner than the corresponding GDI+ metafile in some ways.
SvgGdi is the main use for SvgNet, although other things (a collection of basic shapes, maybe charting tools) may be built on SvgNet in the future.
Documentation
The SvgNet class libraries are documented in this help package. Additionally, there are two example applications bundled with SvgNet:
SvgDocTest -- test application that reads and writes documents and constructs an SVG document. This application is both an example and test system.
SvgGdiTest -- application that draws various scenes with SVG and GDI+. It is both an example of SvgGdi use, and a test of how accurate SvgGdi's emulation of GDI+ is.
The SvgNet Project
SvgNet is an Open Source project under a BSD-like license (license terms are reproduced in every SvgNet source file). SvgNet is copyright 2003 RiskCare Ltd.
This is not a perfect code. I am very new to adapt all the XML Apis. Actually this code works fine. If there are fixed three nos. of <image> nodes in the file A.
But these node are quite, they can be two, one , or more <image> node in file A.
In that situation program crashes.
Can you please help me to provide the optimized sample code to deal with this, using C# for this.
I just want read the value of x and y from the <<rect>> and remove the transform attribute from <<text>> and place the earlier read xand y as a x and y atribute to <<text>>
can some body help me out with a sample code for that. below is a sample format which i have to modify.
OR read the last two value from the transform attribute ::transform="matrix(1 0 0 1 100.1431 112.2344)" and delete the transform attribute and add the two bold values and x and y attributes.
I am using the SVG-library with success. But when the graphics become more complex*) the server hangs and the debugger says "stack overflow error" in function GetXML().
When switching off parts of the drawing, the library works.
Does anyone know how this error can be corrected?
Thank You, Franz
*) The drawing consists of up to 6 charts with about 100 vertical lines. The amount of lines is the problem. When the lines are omited, the drawing works and also when then amount of charts per drawing is reduced to 4.
You cant read the .SVG file using this library. That portion is not written in this library. If you really want to do that you have to write you own piece of code. To read the code to reading the .SVG. I read to do it I was able to do but struck while reading the matrix transformation. If you would able to write it or get the help somewhere , please le me knw too.
Hi Nikkie. I wrote my own code to read the svg file. I used an algorithm to read a simple xml file, you can see it here http://www.c-sharpcorner.com/UploadFile/mahesh/ReadWriteXMLTutMellli2111282005041517AM/ReadWriteXMLTutMellli21.aspx[^] in the sample number 2 you will see how it works with xmlelements. I use a GoDiagram library to draw the differents figures, for example, if xmlelement == "line" so draw.line(coorx, coory), the coordinates in svg document are the attributes, so you can read the coordinates too. So you can read the svg file and you can draw the same figure with c#. You can draw without GoDiagram too, only you need to know how to draw lines, circles or wathever in c#.
HOw you are dealing with the transform matrix, I am struck with that portion can you help. How you are reading the 6 cordinates of the attribute transform=matrix(1,2,3,4,5,6)
Hi everybody. I have Vista SP1 and VS 2008 in my pc. Of course, now I downloaded SVG Adobe too and SVG version 0.92.
I'm trying to compile this project but some errors occurs. My firts question is about the windows, maybe this project does not run here and maybe does not run with VS 2008 too. So if it runs please tell me what I need to do. Second. About the errors: First I Build the solution in VS2008 no errors happends but 708 warnings appears, here is one:
Warning 1 Missing XML comment for publicly visible type or member 'SvgNet.SvgElement._children' C:\Users\M\Documents\Proyectos\svgnet_src092\SvgNet\SvgNet\SvgElement.cs 5923 SvgNet
Second. I select SvgDocTest as startup project so when I run the project a exceptions happends:
I reply myself. Well for all folks that use Vista, take care, because the adobe plug in does not working fine inthis O.S. Use XP to compile this project.
while running the sample the above statement in SvgGdiTest project gives "Object reference not set to an instance of an object" error. I am using IDE vs2003 and .Net Framework v1.1. Kindly help.
Found this great lookin library whilst on my searches, I'm thinking of writing a .NET Framework Extension for SVG and just wanted to check whats been done. This article was posted a while ago whats the state of play these days? Ben you still about? tried following the links but they're dead.
I'm still alive and this library still works for rendering GDI+ calls to SVG -- but it's unlikely I'll ever do any more work on it. Thanks for your interest though
Is it possible that you create a sourceforge project for this? So maybe other people can join the project and develop it further? E.g. for me it's useless only because it doesn't support FillPath/DrawPath, but maybe sometime I will do something on it and then it would be bad, if I couldn't easily provide it to the community. It is a really great project!
hello~everyone~~ i am just beginning to learn SVG... just as title... i downloaded the source file,but i don't know how to install the source file... could you tell me how to do? thanks ~!!!
Hello. We are som students trying to use SvgNet in asp.net to generate a svg picture´.. But it isnt working. we are using an Embed tag inside the asp.net page like this:
im new to learning svg. i open the project svgdoctest. im trying to run the SvgDocTest but compiler is giving many errors. ive already installed adobe svg viewer. below are the errors given:-
a) line 0 = missing file specification for 'lr' command-line option(CS2005) b) line 33,34,35 = the type/namespace name 'SvgNet' could not be found(are you missing directive or an assembly reference?)(CS0246) c) line 50,51 = the type/namespace name 'AxSVGACTIVEXLib' could not be found (are you missing directive or an assembly reference?)(CS0246) d) line 220 = the type/namespace name 'SvgElement' could not be found (are you missing directive or an assembly reference?)(CS0246) e) line 67 = TODO Add any constuctor code after InitializeComponent call
please help me solve this as im doing a project regarding svgnet.