New Ab2d.ReaderWmf support Drawing objects with advanced optimization

by abenedik 5. December 2008 00:45

I am really excited to inform you about new features of the new Ab2d.ReaderWmf v3.0 library.

Previous versions of Ab2d.ReaderWmf read metafiles and returned them as Shapes (Path, Polyline, Ellipse, etc.). This was great when you needed to manipulate separate objects or add some mouse events to objects. This flexibility with Shapes has its cost when complex objects are shown - the performance could be very poor and memory consumption very high.

WPF provides a much more efficient way to show more complex images with Drawing objects - objects that derive from Geometry class - DrawingGeometry, StreamGeometry, etc. The new version of Ab2d.ReaderWmf provides a ReadGeometry method that returns drawing objects (the Read method returns Shapes). And this is not all - it is possible to further optimize the drawing by using resources for similar Pens and Brushes and by combining geometries together..

The following two graphs show how the load time and the memory usage are decreased when optimized Drawing objects are used. Results are based on a complex dwg (AutoCAD) file that was converted to metafile and exported to xaml with Paste2Xaml with different export options.

geometry load time
geometry memory usage

The results show that it is possible that the load time decreases for more than 10 times and the memory usage for more than 5 times. This is especially true for metafile with lots of objects that have same pen or brush. The results are best on files created from AutoCAD or other CAD or vector drawing application. Cliparts and other types of metafiles also have significant performance improvement.

Heavy optimization of course has its side effects. If geometries are be combined, they cannot be manipulated individually. It is possible that with full optimization, some animalied appear on image. Because of this, it is possible to fine tune the optimization with lots of advanced options and find the right balance between usability and performance.

The following two screenshots show the new Paste2Xaml application and its new Export dialog:

Paste2Xaml ExportDialog

And there is more new to show. The next new feature is support for building ResourceDictionaries from many metafiles. ResourceDictionaryWriter class can be used to simplify this job. And to make this even simpler there is also a sample application with full source code that on one side shows how to use the ResourceDictionaryWriter and on the other side provides really easy to use application to create ResourceDictionaries. The following image shows the ResourceDictionaryWriter application:


The list of new features is not over. Here is also a GetXaml method that gets the xaml text of the last read metafile. This method is needed because the WPF's XamlWriter does not correctly write some elements and is also not useful for naming elements and writing ResourceDictionaries.

That is quite a bunch of new features, isn't it?

So to conclude. The new version of Ab2d.ReaderWmf library not only enables you to convert almost any image from almost any vector drawing application into xaml, but also enables you to choose between Shapes and optimized Drawing objects and also enables you to package all those objects into a ResourceDictionary.

The only thing left to say is to invite you to try the 60 days evaluation version. It is available from

Tags: , , ,


Add powerful and animated zooming and panning features to your application with new ZoomPanel control

by abenedik 22. August 2008 00:40

WPF's vector based graphical engine is a perfect choice to display complex 2D diagrams, schemas, complex graphs and other graphical elements. It is often necessary for the user of the application to see the whole image and that the user can also zoom in to see the details. The WPF already provides some basic scaling and translating mechanism. But it is a long way from Scale and Translate Transform to a great user experience.

With the new ZoomPanel control this way is really short and the results are really great. All the code that is needed is:

ZoomPanel sample code

The code enables the user to zoom in, out, zoom to rectangle, pan with the mouse, use mouse wheel to zoom in and out and zoom to show the whole content of the ZoomPanel - in this case a simple TextBlock. The ZoomController is a predefined toggle buttons panel that is used to switch between different zoom modes.

But this is not all - the sweetest part of the control is that is can animate the zooming and panning! So when the user zooms in on a part of an image, the image is not just simply redrawn with the new scale factor, but the zooming is animated to look much more natural - just like the user would move his head closer.

The following screenshot shows ZoomPanel in action - taken from a sample application that comes with the package:

ZoomPanel sample application

And guess what - that is still not all.

The Ab2d.Controls.ZoomPanel library contains also a RectAnimation class (animate Rect objects) and an extended WPF's Viewbox - a ViewboxEx.

The ViewboxEx can be also very useful. With its default values it is the same as Viewbox. But it has additional Viewbox property that defines which part of ViewboxEx content will be shown - for example "0.5 0 0.5 1" shows only the right half of the content - starting at 50% and showing 50% of width.

For more information see

From the page it is possible to download a 60 days evaluation version (sorry, no free version this time) or purchase a licensed version (recommended :) To make it even more attractive I have added an option to buy a full source code for the library. See for more purchasing information.

As usual I am giving a launch discount - after adding items to the shipping cart enter "initialZoomPanel" into discounts textbox and click Apply.

The discount is valid only until the end of October 2008.

Tags: , ,


Commercial versions of Ab2d.ReaderSvg and Ab2d.ReaderWmf available

by abenedik 8. August 2008 10:40

I am happy to announce that the commercial versions of Ab2d.ReaderSvg and Ab2d.ReaderWmf are available.

The purchase can be done on

As rss subscriber I give you 10% launch discount.
For ReaderSvg enter "ReaderSvgRss" as a discount code on the Purchase page. For ReaderWmf enter "ReaderWmfRss"

The discount is valid only until the end of August 2008.

Tags: , , , , ,

ReaderSvg | ReaderWmf

New version of Ab2d.ReaderSvg and Ab2d.ReaderWmf available

by abenedik 8. July 2008 09:04

Based on great users feedback both svg and metafile importer libraries were improved.

New in Ab2d.ReaderSvg library v1.7:

  • Improved reading text - added support for nested tspan elements inside text.
  • Fixed reading text-anchor when defined in parent elements.
  • Improved reading svg files with missing xmlns declarations.
  • Improved performance when reading text. Also now more fonts are rendered correctly.
  • Fixed reading embedded images (sometime the bounds of the TextureBrush) were not read correctly.

New in Ab2d.ReaderWmf library v1.4:

  • Added support for pen's LineJoin, LineCap and Dash Style.
  • Added support for Arc.
  • Improved placing text in some metafiles.
  • Corrected the width of the lines.
  • Correctly use Polyline and Polygon.

New versions are available from

The commercial versions for both Ab2d.ReaderSvg and Ab2d.ReaderWmf will be available soon - probably in one month time. This makes the published versions the last freely available versions. Both will expire on 31th December 2008.

Thank you to all who have provided feedback on the Ab2d libraries.

Tags: , , , , ,

ReaderSvg | ReaderWmf

Commercial version of Ab3d.Reader3ds available

by abenedik 4. June 2008 17:00

As promised the commercial version of Ab3d.Reader3ds is available.

The purchase can be done on

As rss subscriber I give you 10% launch discount. Just enter "Reader3dsRss" as a discount code on the Purchase page.
The discount is valid only until the end of July 2008.

Tags: , , ,


New version of Ab3d.Reader3ds available

by abenedik 1. June 2008 00:15

I hope you did not notice that the actual version of Reader3ds has expired today. If you did, I would like to apologize for the inconvenience.

So finally the new version 4.3 is available for download.
This is the last freely available version and will expire on 31th December 2008.

The following is the list of changes:

  • Fixed bug where camera name or light name is longer than 8 characters (ArgumentOutOfRangeException: Length cannot be less than zero.).
  • Added public static get ExpirationDate - so it is possible to get expiration date without actually creating an instance of Reader3ds (this can already throw expired exception).
  • Fixed exception when reading 3ds file without any animation keyframe.

    The commercial version is already prepared. The version 4.3 is almost the same as the commercial version – the only difference is that it does not contain licensing system (it has the nasty expiration date).

    The commercial version should be available at the end of the week. I need to move the site to a new and faster server and then it will be possible to purchase the license (automatically on the new site).

    Another great news is that new versions of Ab2d.ReaderSvg and Ab2d.ReaderWmf are also almost prepared and will be published very soon. And until the end of the month commercial versions of both will be available also.

  • Tags: , , ,


    Explore the power that Silverlights brings to the web with two new tutorials

    by abenedik 16. April 2008 17:10

    Silverlight Excel application
    The first tutorial describes how to convert an excel graph to a Silverlight application with Paste2Xaml tool. To show the power of Silverlight we add a starup animation and a dynamicaly showing graph data on moving the mouse over graph's bars. The full source code is also available.
    TRY Silverlight Excel application
    Silverlight EU Countries application
    The second, more advanced, tutorial shows how to convert a map of EU countries in svg file to a Silverlight application with ViewerSvg. The tutorial will also show how to read the data from xml file and how to use data binding. The application will show the basic data about the country that is selected with the mouse. There is also a slider that shows when the countries were joining the EU.
    TRY Silverlight EU Countries application

    The tutorials can be found at

    Tags: , , ,

    ReaderSvg | ReaderWmf | Tutorial