Version 5.1 of the VG.net vector graphics system is released. Click the image above to run the robot arm sample. The buttons at the top change the overall color of the application. This color change uses a new feature in VG.net called Themes.
A Theme is similar to a style sheet in html. A Theme collects common Style and ImageData objects in a single place, for reuse across multiple Pictures, or to swap a set of Styles as a batch. The robot arm sample contains three Themes that are dynamically swapped to change several Styles at the same time. When used across multiple Pictures, a Theme eliminates time wasted duplicating and synchronizing Styles. You can edit and preview Styles in a Theme as you would in any Picture.
Other changes in version 5.1 include:
- Fast Scrolling: by default, Canvas scrolling is hardware accelerated, as demonstrated in an earlier blog post.
- Serialization: save and restore objects to and from compact binary files or streams. You can serialize VG.net objects or your own classes and structures. This is useful for custom editors, storing objects in a database, or transferring objects across a network. You will find serialization related classes in the Prodige.Serialization namespace. Unlike the serialization support built into the .NET framework, the classes in Prodige.Serialization are designed to: minimize file size, maximize speed, operate without reflection or boxing of value types, and provide infinite upward compatiblity for serialized files.
- TranslucentForm Improvements: the TranslucentForm class, a window providing a complete vector graphics UI with per-pixel alpha transparency, is extensively reworked and many problems are eliminated.
- Source Code Samples: new samples in the standard and Extras package include a strip chart library, a SCADA simulation, a particle system, a Theme demonstration, a basic button library, and bitmap effects. Two of the these samples are described below.
- The VG.net Users Guide contains new sections describing Themes and Serialization.
- Bug fixes and smaller enhancements: please see the 5.1 Readme for more information.
A new strip chart component is provided in the strip chart sample in the Extras package. Click on the image above to run the sample. The strip chart is designed to minimize CPU usage, so you can use several on the same screen. You can pause the automatic chart scrolling. When paused, you can manually scroll the chart to any data sample. The chart saves data samples in a circular buffer, which you can set to any size needed. The chart also supports zooming in integer increments.
Click the image above or below to run the new particle system sample provided in the Extras package. The particle system creates and animates 10,000 particles. Originally written to illustrate the operation of an egg smashing machine, you may wish to use the particle system component to illustrate a mixing or painting operation. The particle system performs all rendering with managed code.

A Monforts textile machine monitoring application won an iF Communications Design Award. The application was designed by :i/d/d using the fast VG.net vector graphics system for the user interface.

We have released a beta of the VG.net vector graphics system containing fast scrolling enhancments. Click on the image above to run the Scrolling Scalability sample, to see the difference in performance. This demo is built with the 2.0 .net framework.
The new ScrollingMode property on Picture allows you to control the behavior. Using Accurate in the demo will show you the old performance. If you are a current VG.net 4.0/3.0 customer (full version), and your application should scroll faster, please email us for the beta download information, as well as the source code for the sample above. The source code contains a useful optimization technique for Pictures containing thousands of Elements, such as mapping applications.
Steed.net is a new way of doing .net development in Visual Studio. You can create state machines in Visual Studio using a graphical designer. The graphical designer uses VG.net vector graphics. A list of features:
- Visual Studio integration
- Graphically create flow charts and state machines
- Your workflow (state machines) determine visualization and creation of controls
- Monitor and log object lifetimes in running applications
- Automatically generates documentation
- Maintains a strict separation between architecture and application code
- Simplifies debugging and error finding
Read more on the State Method web site.

Versions 4.0 and 3.0 of the VG.net vector graphics system are released. Version 4.0 supports Visual Studio 2005, and version 3.0 supports Visual Studio 2003. Read more in the Readme file.
Some new features:
- Use the new Style Precedence property to override a Style in a sub Picture with a Style in a parent Picture.
- Trigger code when the mouse wheel is rotated using the new MouseWheel event on every Element.
- Copy and paste Styles in the Style collection editor.
- Font caching increases the performance of displays using many different TextAppearance objects.
If you downloaded version 4.0.2702, and you ran into a file path error during installation, please re-download the latest build 4.0.2705, which fixes this installer error.
The screenshot above is a calendar pop-up window created with VG.net scalable vector graphics. The shadow around the window has per-pixel translucency, thanks to the TranslucentForm class.
If you write transportation management applications, or applications which track trucks, railroad cars, or other vehicles, you may be interested in this vehicle tracking simulation using VG.net vector graphics. It is a combination of the PanZoom and PathMove samples, demonstrating:
- Real-time tracking of vehicles using scalable vector graphics
- Implementation of a Vehicle class with custom properties
- Movement of an object along a path
- Control over velocity of movement
- Zooming and panning
- Throttling CPU usage of animation of specific objects
- Layers using Groups
The Vehicle class custom properties:
- Velocity
- MovementPath: the path along which the vehicle moves
- Position: distance along the movement path
- Direction: forward or backward
- State: normal, or alarm state, indicated visually by a change in the color (red vehicles are in the alarm state)
Download the executable by clicking on the image above. Download the source code, which compiles with Visual Studio 2003. You will need VG.net installed, full or Lite version.

Click on the image above to run the Centralized Styles sample for VG.net vector graphics. Grab the lower right corner of the window to scale the UI larger and smaller.
Download the source code to learn how to centralize all your Styles into a single template Picture that overrides Styles recursively, starting at a top-level Picture and moving to sub Pictures.
In the future we will have a special class in VG.net you can derive from, a type of Picture, that you can drag and drop onto any Picture in order to reuse a central set of Styles. This sample code allows you to centralize Styles with released versions of VG.net, 2.7 or 2.8.
This sample also demonstrates how to create a vector graphics LED radio button, and how to use the TranslucentForm class.
If you are using a Lite version, change DisplayInTranslucentForm to DisplayInForm, and you can run the code.

A beta version of the VG.net vector graphics Designer integrated in Visual Studio 2005 is released. If you are an existing customer, you will receive an email with download instructions.
Regarding VG.net version numbers: from now on, versions 3.x will be built for VS 2003, and versions 4.x will be built for VS 2005. These versions can be installed side-by-side. There is one problem in the beta version: if you uninstall the 4.0 beta, the documentation for both versions is uninstalled. This can be fixed by going to Add/Remove Programs and selecting "Repair" for VG.net.
A big thanks to the Microsoft people who helped us around the breaking changes in Visual Studio 2005.
Click on the image above to download and run the new drag-drop sample using VG.net vector graphics. This sample demonstrates two techniques for moving Elements or sub Pictures. If you mouse down and drag from the left column to the editing surface on the right, we use standard drag and drop events. If you mouse down and drag over an Element on the editing surface, we use mouse events to move the Element.
Mouse events are simpler, but the drag-drop events may be more appropriate when using multiple Canvas objects. See the sample source code for more information. You will need to install VG.net to build this sample.
If you are interested in 3D effects, examine the GlowButton class in this sample.

Download the translucent calculator executable.
Version 2.7 of the VG.net vector graphics system is released. The Translucent Calculator article describes how to build a user interface completely defined with vector graphics, using the new TranslucentForm class.
The calculator has no window border, and the edges are anti-aliased with per-pixel translucency, as seen in the close-up below:

Grab any of the calculator corners to resize it using the mouse. Because this calculator is built with vector graphics, you can resize it without any of the pixel scaling problems inherent in bitmap graphics:
The techniques in the article are ideal for applications that use skinning and fancy user interface features, such as gel buttons. The article describes how to separate a user interface from application logic, so you can build a custom calculator skin.
Other new features in this release include:
- Greatly improved performance, in memory and time, for path gradient fills, by sharing gradient cache data across similar Elements
- Other performance improvements for non-shared path gradient fills
- Use the new BaseStyle property in Style to collect common appearance properties from several Styles into a single location
- All mouse events in the Picture class now bubble up to Canvas or TranslucentForm, which have a set of new events, including PictureMouseDown
- You can now drag and drop a Picture from the Toolbox onto a Canvas or TranslucentForm to display in the recipient
- Use new ElementPoint property in ElementMouseEventArgs to determine the mouse position in the coordinate space of the Element raising the event
For a complete list of changes see the version 2.7 Readme document.
More Posts
Next page »