Click here to Skip to main content
15,879,095 members
Articles / Programming Languages / C#
Article

SVGPad - Application and class library for editing SVG documents.

Rate me:
Please Sign up or sign in to vote.
4.44/5 (13 votes)
6 Sep 20043 min read 136.2K   7.6K   88   13
A simple C# application and a C# class library for editing SVG documents.

Introduction

This article presents the SVGPad application, a simple C# tool designed for editing SVG documents. The SVGPad is a very simple editor (it is not a WYSIWYG application) that can be useful for learning SVG syntax and for building simple SVG documents. It provides a complete control over the SVG document generated (and this is not always true if you use a graphic tool).

Background

The article assumes that you are familiar with basic concepts of Scalable Vector Graphics (SVG), an XML application that provides a language to describe two-dimensional graphics.

SVG specification is published by W3C and can be found here:

SVG graphics are based on three different types of objects: vector graphics, images, and text. Graphical objects can be grouped, styled, transformed, and animated. Animation is performed via scripting since a rich set of event handlers (such as onmouseover, onclick, …) can be assigned to any SVG object.

SVG has several benefits that make it the best choice for web applications that need 2D graphic support. Because it is a vector format the graphic files are smaller and they are resolution independent. In addition since graphics are stored in a text file labels and descriptions can be indexed by search engines.

SVGPad

How it works

The SVGPad UI is divided in two main panes.

Image 1

The left pane contains a tree that represents the SVG document. The right pane contains a PropertyGrid displaying the property of the current selected object on the tree and a text box that shows the SVG representation of the selected object. The PropertyGrid shows only the attributes that are suitable for the element type selected.

The application functionality can be accessed using the toolbar of via the tree context menu.

Image 2

Supported elements and attributes

The SVGPad does not cover all the SVG elements and attributes; in this first release it just implements the most common elements:

  • text
  • desc
  • group
  • rect
  • circle
  • ellipse
  • line
  • path
  • polygon
  • image

For each element a subset of SVG attributes is supported:

  • Core attributes
  • Paint/Color attributes
  • Style attributes
  • Opacity attributes
  • Graphic attributes

Other SVGPad functions

  • New, create a new empty SVG document.
  • Open, load an SVG document from a file.
  • Save, save the current document.
  • Preview, open the SVG file in the default web browser.
  • Copy, copy the selected SVG element.
  • Cut, cut the selected SVG element.
  • Paste, paste the element in the clipboard.
  • Delete, delete the selected SVG element.
  • Element up, move the selected element up (before its previous element)
  • Element down, move the selected element down (after its next element)
  • Level up, move the selected element up one level in a hierarchy

SVGLib

The SVGPad application is based on the SVGLib C# class library. The SVGLib provides a set of classes that represent the SVG document, the SVG elements and attributes. It can be used for creating and managing SVG documents.

The SVGLib classes have been documented using NDoc and the chm file is included in the attached binary file zip.

Using the SVGLib is very simple; first of all you need to create a document:

C#
SvgDoc doc = new SvgDoc();
SvgRoot root = doc.CreateNewDocument();
root.Width = "500px";
root.Height = "500px";

Then you can start adding elements:

C#
SvgRect rect = new SvgRect(doc, 
     "50px", 
     "25px", 
     "300px", 
     "200px",
     "3px", 
     Color.LightPink, 
     Color.Black);
doc.AddElement(root, rect);

rect.RX = "2px";
rect.RY = "2px";

SvgCircle circle1 = new SvgCircle(doc, 
     "350px", 
     "200px", 
     "50px");
doc.AddElement(root, circle1);

circle1.Fill = Color.DarkBlue;

SvgCircle circle2 = new SvgCircle(doc, 
     "50px", 
     "200px", 
     "50px");
doc.AddElement(root, circle2);

circle2.Fill = Color.DarkBlue;

Finally you can save the document.

C#
doc.SaveToFile("c:\\temp\\sampledoc.svg");

Here the created file shown in a web browser.

Image 3

History

  • 05-Sep-2004 R0.10, First release.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer
Italy Italy
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralMy vote of 5 Pin
Manoj Kumar Choubey20-Feb-12 19:31
professionalManoj Kumar Choubey20-Feb-12 19:31 
GeneralHow to update style attribute of a Path tag using This library Pin
Esonix22-May-11 23:55
Esonix22-May-11 23:55 
QuestionHave you complete some 'unsupport' functions? Pin
YinBoChao26-Sep-09 17:10
YinBoChao26-Sep-09 17:10 
General'crop' vector image Pin
abentov16-Mar-09 16:18
abentov16-Mar-09 16:18 
GeneralYou made a mistake in svglib! [modified] Pin
Wan--Vevi23-Jul-08 22:16
Wan--Vevi23-Jul-08 22:16 
Question.net 2.0? Pin
Jaime Olivares25-Nov-07 9:46
Jaime Olivares25-Nov-07 9:46 
GeneralLoading of Adobe Illustrator SVG file error Pin
lieperik21-Jan-07 4:06
lieperik21-Jan-07 4:06 
GeneralExporting the assembly Pin
Mr Delphi Developer12-Apr-06 4:38
Mr Delphi Developer12-Apr-06 4:38 
GeneralWoo Pin
vivaladan5-Mar-06 4:24
vivaladan5-Mar-06 4:24 
Generalinstalling svgpad Pin
forkinpm6-Feb-05 20:31
forkinpm6-Feb-05 20:31 
GeneralRe: installing svgpad Pin
big717-Feb-05 9:22
big717-Feb-05 9:22 
GeneralCool application; Feature request Pin
WillemM7-Sep-04 7:21
WillemM7-Sep-04 7:21 
GeneralRe: Cool application; Feature request Pin
big717-Sep-04 21:21
big717-Sep-04 21:21 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.