VintaSoft Imaging .NET SDK 12.4: Documentation for .NET developer
In This Topic
    How to use the external scroll bars with WPF image viewer?
    In This Topic
    In order to use the external scroll bars in WpfImageViewer class is necessary to:

    WpfImageViewerState class provides the following abilities for manipulating the scroll bars of WpfImageViewer:

    Here is C#/VB.NET code that demonstrates how to use external scroll bars with WpfImageViewer class:
    public partial class WpfImageViewer_ExternalScrollBars : System.Windows.Window
    {
    
        #region Constructors
    
        public WpfImageViewer_ExternalScrollBars()
        {
            InitializeComponent();
            // ...
            imageViewer.ImageLoaded += new System.EventHandler<Vintasoft.Imaging.ImageLoadedEventArgs>(imageViewer_ImageLoaded);
            imageViewer.ZoomChanged += new System.EventHandler<Vintasoft.Imaging.UI.ZoomChangedEventArgs>(imageViewer_ZoomChanged);
            imageViewer.SizeChanged += new System.Windows.SizeChangedEventHandler(imageViewer_SizeChanged);
            horizontalScrollBar.ValueChanged +=
                new System.Windows.RoutedPropertyChangedEventHandler<double>(ScrollBar_ValueChanged);
            verticalScrollBar.ValueChanged +=
                new System.Windows.RoutedPropertyChangedEventHandler<double>(ScrollBar_ValueChanged);
    
            imageViewer.AutoScroll = false;
            // ...
        }
    
        #endregion
    
    
    
        #region Methods
    
        /// <summary>
        /// Image is loaded in image viewer.
        /// </summary>
        private void imageViewer_ImageLoaded(object sender, Vintasoft.Imaging.ImageLoadedEventArgs e)
        {
            SetScrollBarsParams();
        }
    
        /// <summary>
        /// Image viewer size is changed.
        /// </summary>
        private void imageViewer_SizeChanged(object sender, System.Windows.SizeChangedEventArgs e)
        {
            SetScrollBarsParams();
        }
    
        /// <summary>
        /// Image viewer zoom is changed.
        /// </summary>
        private void imageViewer_ZoomChanged(object sender, Vintasoft.Imaging.UI.ZoomChangedEventArgs e)
        {
            SetScrollBarsParams();
        }
    
        /// <summary>
        /// Sets parameters of scroll bars.
        /// </summary>
        private void SetScrollBarsParams()
        {
            // initialize horizontal scroll bar
            horizontalScrollBar.Minimum = 0;
            horizontalScrollBar.Maximum = imageViewer.ViewerState.AutoScrollSize.Width;
            horizontalScrollBar.Track.ViewportSize = imageViewer.ActualWidth;
    
            // initialize vertical scroll bar
            verticalScrollBar.Minimum = 0;
            verticalScrollBar.Maximum = imageViewer.ViewerState.AutoScrollSize.Height;
            verticalScrollBar.Track.ViewportSize = imageViewer.ActualHeight;
        }
    
        /// <summary>
        /// Scroolbar is changed.
        /// </summary>
        private void ScrollBar_ValueChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<double> e)
        {
            System.Windows.Point currentPosition =
                new System.Windows.Point(horizontalScrollBar.Value, verticalScrollBar.Value);
            imageViewer.ViewerState.AutoScrollPosition = currentPosition;
        }
    
        #endregion
    
    }
    
    Public Partial Class WpfImageViewer_ExternalScrollBars
        Inherits System.Windows.Window
    
        #Region "Constructors"
    
        Public Sub New()
            InitializeComponent()
            ' ...
            AddHandler imageViewer.ImageLoaded, New System.EventHandler(Of Vintasoft.Imaging.ImageLoadedEventArgs)(AddressOf imageViewer_ImageLoaded)
            AddHandler imageViewer.ZoomChanged, New System.EventHandler(Of Vintasoft.Imaging.UI.ZoomChangedEventArgs)(AddressOf imageViewer_ZoomChanged)
            AddHandler imageViewer.SizeChanged, New System.Windows.SizeChangedEventHandler(AddressOf imageViewer_SizeChanged)
            AddHandler horizontalScrollBar.ValueChanged, New System.Windows.RoutedPropertyChangedEventHandler(Of Double)(AddressOf ScrollBar_ValueChanged)
            AddHandler verticalScrollBar.ValueChanged, New System.Windows.RoutedPropertyChangedEventHandler(Of Double)(AddressOf ScrollBar_ValueChanged)
    
                ' ...
            imageViewer.AutoScroll = False
        End Sub
    
        #End Region
    
    
    
        #Region "Methods"
    
        ''' <summary>
        ''' Image is loaded in image viewer.
        ''' </summary>
        Private Sub imageViewer_ImageLoaded(sender As Object, e As Vintasoft.Imaging.ImageLoadedEventArgs)
            SetScrollBarsParams()
        End Sub
    
        ''' <summary>
        ''' Image viewer size is changed.
        ''' </summary>
        Private Sub imageViewer_SizeChanged(sender As Object, e As System.Windows.SizeChangedEventArgs)
            SetScrollBarsParams()
        End Sub
    
        ''' <summary>
        ''' Image viewer zoom is changed.
        ''' </summary>
        Private Sub imageViewer_ZoomChanged(sender As Object, e As Vintasoft.Imaging.UI.ZoomChangedEventArgs)
            SetScrollBarsParams()
        End Sub
    
        ''' <summary>
        ''' Sets parameters of scroll bars.
        ''' </summary>
        Private Sub SetScrollBarsParams()
            ' initialize horizontal scroll bar
            horizontalScrollBar.Minimum = 0
            horizontalScrollBar.Maximum = imageViewer.ViewerState.AutoScrollSize.Width
            horizontalScrollBar.Track.ViewportSize = imageViewer.ActualWidth
    
            ' initialize vertical scroll bar
            verticalScrollBar.Minimum = 0
            verticalScrollBar.Maximum = imageViewer.ViewerState.AutoScrollSize.Height
            verticalScrollBar.Track.ViewportSize = imageViewer.ActualHeight
        End Sub
    
        ''' <summary>
        ''' Scroolbar is changed.
        ''' </summary>
        Private Sub ScrollBar_ValueChanged(sender As Object, e As System.Windows.RoutedPropertyChangedEventArgs(Of Double))
            Dim currentPosition As New System.Windows.Point(horizontalScrollBar.Value, verticalScrollBar.Value)
            imageViewer.ViewerState.AutoScrollPosition = currentPosition
        End Sub
    
        #End Region
    
    End Class