New version of ZoomPanel adds animation easing

by abenedik 18. November 2011 22:20

I am happy to announce that a new version of ZoomPanel is available.

The new version greatly improves zooming animations with adding animation easing and support for custom animations.

In the previous versions of ZoomPanel the zooming was animated with using a simple linear animation. Now a quintic function is used to ease the animation that starts slowly, than accelerates, decelerates and slowly stops at the new zoom level.

 

There is also a new zoom to object sample that shows how to zoom to selected object. The sample also demonstrates the power of custom animations. The following video shows the new sample:

 

The new version also fixes an issue with Viewbox with SetViewbox or SetZoom methods when the RotationAngle is not 0 and it is not changed. Before the RotationAngle was reset to 0 in some circumstances.

Tags:

ZoomPanel

Improved Ab2d.ReaderSvg, Ab2d.ReaderWmf and ZoomPanel available

by abenedik 10. October 2011 14:23

The major improvement in this release is made in the licensing code for commercial versions of the products.

The update contains also some minor improvements in the Ab2d.ReaderSvg and Ab2d.ReaderWmf libraries and a small improvement in ViewerSvg. But let me first tell you about the changes in the commercial licensing code.

Recently a customer reported very long delays (up to 10s) when creating an instance of ZoomPanel class. After some investigation I have discovered that the delay is related to a "bug" in Microsoft's RSACryptoServiceProvider class (see http://support.microsoft.com/kb/948080). The RSACryptoServiceProvider is used to validate the license and under some circumstances the VerifyData method on the class can cause a long delay. The licensing code has been changed to prevent the delay. The problem with this bug is that the licensing code can work very well on computers where you test your products, but on some client's computer the RSACryptoServiceProvider can cause your application or product to start with a long delay.

Therefore it is highly recommended to update the products to the latest version.

But this was not the only improvement in the licensing code. Now it is possible to set the new EmbeddedLicenseAssembly property to make the check of the embedded license even faster. To understand the purpose of the new property let me first shortly describe how the licensing code works.

The licensing code in our components uses the standard .Net licensing system. This means that at compile time the compiler calls the licensing code in our products. There the developer license key is read. It is converted into a runtime license key and saved by the compiler into assemblies embedded resource. When our component is used in your application, its licensing code first tries to find the embedded runtime license key. Because our component does not know which assembly contains the embedded license key, it is usually needed to check resources in multiple assemblies before the correct one is found. To make this check much faster, it is now possible to set the static EmbeddedLicenseAssembly property to the assembly that contains the embedded license. This way the licensing code can immediately find the license key and can therefore execute much faster.

The following example sets the EmbeddedLicenseAssembly for the ZoomPanel control:

public class MyClass()
{
    public MyClass()
    {
        Ab2d.Licensing.ZoomPanel.LicenseHelper.EmbeddedLicenseAssembly
          = typeof(MyClass).Assembly;

        InitializeComponent();
    }
}

Samples for other products and some additional details about this process can be found in the new "Using commercial version" help file.

 

The improved licensing code is currently available for Ab2d.ReaderSvg, Ab2d.ReaderWmf and ZoomPanel. The fix for Ab3d.Reader3ds and Ab3d.PowerToys will be available in the following days (both libraries will have many new features that have to be finished before publishing).

 

As mentioned before, this update also brings some additional improvements to Ab2d.ReaderSvg and Ab2d.ReaderWmf.

ReaderSvg and ViewerSvg:

  • Added NameFormatString property to BaseXamlWriterSettings - it can be used to customize how the object names are written to xaml (custom prefixes and suffixes can be added to names). The export window in the ViewerSvg have two new TextBoxes that can be used to specify custom prefix and suffix that will be used to format the object names.
  • Improved reading svg image elements with added support for preserveAspectRatio property.

 

ReaderWmf:

  • Improved drawing Paths - in some cases only path stroke should be drawn without using any fill.
  • Added support for monochrome brushes.

Tags:

ReaderSvg | ReaderWmf | ZoomPanel

Update for Ab2d.ReaderSvg, Ab2d.ReaderWmf and ZoomPanel available

by abenedik 12. August 2011 20:37

I am happy to announce that all our 2D products have been updated.

The following screenshow is showing improved design time support for SvgViewbox and WmfViewbox:
SvgViewbox and WmfViewbox in Visual Studio

 

The following are the changed in Ab2d.ReadSvg:

  • Improved design time support for SvgDrawing control - now the svg file is shown in design time (before the image in design time was shown only in SvgViewbox).
  • Added SvgFileLoading and SvgFileLoaded events to SvgViewbox and SvgDrawing controls.
  • Prevented locking referenced image files.

 

The following are the changed in Ab2d.ReadWmf:

  • Added support for pattern brushes. Reading pattern brushes is turned on by default but can de disabled with setting ReadPatternBrushes to false.
  • Improved design time support for WmfViewbox and WmfDrawing controls - now the metafile is shown in design time.
  • Added MetafileLoading and MetafileLoaded events to WmfViewbox and WmfDrawing controls.
  • Fixed reading some embedded images that have their width or height negative.

Added support for pattern brushes need some additional comments because there are some differences between handling pattern brushes in GDI+ and WPF. Pattern brushes in GDI+ are not affected by the scale of the shown image. This means that if you zoom in or out of the metafile that is drawn by GDI+, the pattern brush is not scaled and is always drawn in a way that one pixel in the pattern bitmap is always rendered with one pixel.

In WPF the bitmap brushes are affected by the scale.

For example if you have a rectangle with 10 x 10 size and pattern brush from 10 x 10 bitmap and you scale the rectangle to be shown on the whole screen, the bitmap will be also scaled to the whole screen. In GDI+ the bitmap is not scaled so the pattern is still the same as when showing the rectangle without scale.

Because of this difference the imported pattern brushes can sometimes look strange. Therefore it is possible to disable reading pattern brushes with setting ReadPatternBrushes to false.

 

ZoomPanel has received the following updates:

  • Fixed problems with using None for Stretch value.
  • Improved using ViewboxLimits.

 

All the products also had a licensing issue that showed unlicensed dialog under some circumstances. This issue is now fixed.

 

As usual the new version can be downloaded from User Account page (for commercial users) or from my Downloads page (for evaluation version).

Tags:

ReaderSvg | ReaderWmf | ZoomPanel

New version of ZoomPanel with tons of new features is available

by abenedik 26. June 2011 22:31

I am really happy to announce that the highly anticipated new version of ZoomPanel library is finally released.

ZoomPanel

The new version brings tons of great new features:

  • Added ZoomPanelNavigator, NavigationCircle and NavigationSlider controls. They can be used to move around zoom area and set zoom factor with slider (shown in the upper left corner in the image above).
  • Added ZoomPanelMiniMap, ViewboxExMiniMap and BaseMiniMap controls. The ZoomPanelMiniMap can be used to preview which part of the content is shown. It also enables moving the shown content and zooming in and out with mouse wheel (shown in the bottom right corner in the image above).
  • Added Stretch property to ZoomPanel - before only Uniform stretch was used. Now it is also possible to use other stretch values: None, Fill, Uniform or UniformToFill.
  • Added IsZoomPositionPreserved property to ZoomPanel - it controls if mouse wheel zooms at the mouse position or at the center of the ZoomPanel.
  • Added RotationAngle property to ZoomPanel.
  • Added ZoomFactor, CenterPosition and CenterPositionUnits properties to ZoomPanel. Before the area that is shown with ZoomPanel was controller by Viewbox property. The usage of this property was sometimes quite complex. Therefore ZoomFactor and CenterPosition were added. They are much simpler to understand and use.
  • Added support to save and navigate through the ZoomPanel history.
  • Added ActualViewbox to ZoomPanel - it describes the actually shown viewbox (the difference is created because of different aspect ratio).
  • Added SetZoom method to ZoomPanel with many overloads to simplify setting which part of the content is shown.
  • Added ZoomAtMousePosition and ZoomAtRelativeMousePosition methods to ZoomPanel.
  • Added IsAutoZoomPanelFindingEnabled property to ZoomController - now it is possible to disable automatically finding the ZoomPanel in case we need to set it manually.
  • Improved design time support when setting Viewbox value for ZoomPanel. Now it is allowed to temporary set the value of Width and Height to 0 (before when 1 was changed the 0.5 the designer throw an exception when 1 was replaced with 0).
  • Added MultiTouchZoomPanel control with full source code.
  • BREAKING CHANGE: When using custom content: Now ZoomFactor is used instead of zoomLevel (in CustomContentProvider callback).

For example the following code is all that is needed to add zooming and panning to the ZoomPanel's content (12345 text in this sample), buttons to control the ZoomMode (ZoomController), zoom panel navigation with buttons and slider to change zoom factor (ZoomNavigator) and mini map that shows which part of the content is shown:

<Window x:Class="Ab2d.ZoomControlSample.ZoomPanelSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ab2d="clr-namespace:Ab2d.Controls;assembly=Ab2d.Controls.ZoomPanel">
  <Grid>
    <ab2d:ZoomPanel Name="myZoomPanel">
      <TextBlock>12345</TextBlock>
    </ab2d:ZoomPanel>
    <ab2d:ZoomController VerticalAlignment="Top"
                         HorizontalAlignment="Right"/>
    <ab2d:ZoomPanelNavigator VerticalAlignment="Top"
                             HorizontalAlignment="Left"/>
    <ab2d:ZoomPanelMiniMap VerticalAlignment="Bottom"
                           HorizontalAlignment="Right"/>
  </Grid>
</Window>

 

The new version comes with many new samples that demonstrate the new functionality. The following screenshot shows one of the samples (the list of all the samples is seen on the left side):

ZoomPanel

 

Even before version 3, the ZoomPanel was the most advanced zooming and panning control for WPF. With this release the control has become even better.

The current price for the Single developer license is only $69. Because so many new features were added to the library, the price will increase significantly on 11th July 2011 (more details are available on Purchase page). So now it is an ideal time to purchase the control, renew the updates subscription or purchase source code for the library.

As usual the new version can be downloaded from User Account page (for commercial users) or from my Downloads page (for evaluation version).

Tags: ,

ZoomPanel

Improved ZoomPanel - added FitToWidth and FitToHeight methods

by abenedik 22. September 2009 04:17

To make the ZoomPanel control even better a few methods were added to the new version:
FitToWidth, FitToLimitsWidth, FitToHeight, FitToLimitsHeight.

 

The methods can be very usefull when the ZoomPanel is used to show the documents. The new methods are demonstrated in the improved version of Documents Brower sample (see image below).

ZoomPanel Documents Browser

The new version v2.1.3551 can be downloaded from my Downloads page.

Tags: ,

ZoomPanel

Improved ZoomPanel to work with Wpf Browser Applications

by abenedik 14. September 2009 22:55

The ZoomPanel control has been improved to work correctly with Wpf Browser applications running in Internet Zone.

The cause of the problem was a real surprise - the Assembly.GetName() method requires FileIoPermissions - in Internet Zone this is not allowed :(

The new version v2.0.3544 can be downloaded from my Downloads page.

Tags: ,

ZoomPanel

Added Documents Browser and Image Browser samples to ZoomPanel package

by abenedik 30. July 2009 21:02

I have just added two interesting Use case samples to ZoomPanel samples.

Besides Painter sample thare are now also Documents Browser and Image Browser samples.

Documents Browser sample

Documents Browser sample shows how to create a WPF application to browser documents that were scaned or recieved by fax. The list of documents is read from Documents.xml file. The documents data are than binded to a ListBox and an Image control. The Image control is enclosed into a ZoomPanel to add zooming and panning support to the document browser.

Image Browser sample

Image Browser sample shows how to create a simple Image Browser application in WPF. The application also uses the ZoomPanel control to enable users to observe the details of the shown images.

Painter sample

Painter sample shows how simple is to add zooming and panning to a drawing application. The implemented zooming is same or even better as in some of the best professional drawing applications.

Also the Feedback page in the samples application is now fixed - it will not send your feedback to localhost any more :)

All the new samples are available with the ZoomPanel package that can be downloaded from my Downloads page.
If you already have the new ZoomPanel control and would just like to get the new samples, they can be downloaded here: ZoomPanelSamples.zip.

And one last note:
The price for the ZoomPanel is still only $69.00 for a single developer license. It is also possible to buy full source code of the library.

Tags: ,

ZoomPanel

New version of the Ultimate ZoomPanel control for WPF available

by abenedik 21. July 2009 17:50

The ZoomPanel control can add animated zooming and panning to any WPF application. With the new version many new features were added to make it the ultimate Zoom Panel control for every zooming scenario.

The following video shows how easy is to add professional zooming and panning to a sample drawing application.

ZoomPanel sample video

Here is the complete list of new features:

  • Added IScrollInfo support - possibility to use ZoomPanel inside ScrollViewer.
  • Added posibility to limit the zoom area with ViewboxLimits, ViewboxMinSize and IsViewboxLimited properties.
  • When animating images the scale quality is lowered to increase the frame rate.
  • Added support for custom or dynamic zoom content - for example for showing maps - RegisterCustomContentProvider and UnregisterCustomContentProvider.
  • Added a new ZoomPanel.SetViewboxNow method - the value is of Viewbox is immediately changed regardless of IsAnimated property.
  • Added a new ZoomPanel.ResetNow method - immediate reset of viewbox.
  • Added ResetToLimits and ResetToLimitsNow methods.
  • Added PreviewViewboxChangedEvent and ViewboxChangedEvent - in PreviewViewboxChangedEvent subscriber can prevent or change the changed Viewbox.
  • Added IsResetToLimits to ZoomController - if true the reset button on ZoomController resets the ZoomPanel to limits.

The samples that come with ZoomPanel have also been greatly improved. They demonstrate all the aspects of the controls and classes available with the library.

To make the use of the ZoomPanel even simpler the package also includes a detailed help file.

More about the new ZoomPanel can be seen on ZoomPanel page.

The new version can be downloaded from my Downloads page.

Tags: ,

ZoomPanel

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 http://www.wpf-graphics.com/ZoomPanel.aspx.

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 http://www.wpf-graphics.com/Purchase.aspx 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: , ,

ZoomPanel

Powered by BlogEngine.NET 1.5.0.7
Theme by Mads Kristensen

Newsletter

Get notified when a new post is published.




You can unsubscribe at any time by clicking on the unsubscribe link provided in any newsletter email.

|  Home  |  Blog  |  Users Forum  |  Contact Us  |  Terms and Conditions  |  Privacy Policy |
Copyright © 2006-2012 AB4D d.o.o. All Rights Reserved.