Very, very big project. I can only give you some starting ideas.
Use WPF. For the graphics building surface, use the class
System.Windows.Controls.Canvas
, for the elements places on this surface, you will use the objects of the type
System.Windows.UIElement
.
Please see:
http://msdn.microsoft.com/en-us/library/system.windows.controls.canvas.aspx[
^],
http://msdn.microsoft.com/en-us/library/system.windows.uielement.aspx[
^].
All the required events, zoom and pan operations are pretty much already developed for your. One hint: use
System.Windows.Controls.Viewbox
,
System.Windows.Controls.ScrollViewer
.
http://msdn.microsoft.com/en-us/library/system.windows.controls.viewbox.aspx[
^],
http://msdn.microsoft.com/en-us/library/system.windows.controls.scrollviewer.aspx[
^],
http://msdn.microsoft.com/en-us/library/system.windows.controls.scrollcontentpresenter.aspx[
^].
The primary data format for the vector graphics created with your editor would be XAML. Most likely, you will need to develop export methods to other vector formats, first of all, to
Scalable Vector Graphics (SVG). Please see:
http://en.wikipedia.org/wiki/Scalable_Vector_Graphics[
^],
http://en.wikipedia.org/wiki/SVG_Working_Group[
^],
http://www.w3.org/Graphics/SVG/[
^].
You should understand that XAML expressive capabilities are narrower than that of SVG. For example, blurring is not supported (to best of my knowledge). So, you need to be careful if you also need import (which would be good).
Most likely, you will also need export to pixel graphics format, which is relatively easy.
[EDIT]
Please also see my past answer to a related question:
Connect different controls[
^].
—SA