VintaSoft Imaging .NET SDK 14.0: Документация для .NET разработчика
В этом разделе
    Просмотр изображений с аннотациями в WPF
    В этом разделе
    Класс WpfAnnotationViewer является производным от класса WpfImageViewer и предназначен для просмотра изображений с аннотациями.

    WpfAnnotationViewer класс расширяет функциональность WpfImageViewer и:

    Программный доступ к аннотациям в WPF просмотрщике изображений с аннотациями

    Коллекцию данных аннотаций любого изображения, загруженного в просмотрщик изображений, можно получить с помощью WpfAnnotationViewer.AnnotationDataController. Коллекцию данных аннотаций сфокусированного изображения можно получить с помощью свойства WpfAnnotationViewer.AnnotationDataCollection. Данные выбранной аннотации сфокусированного изображения можно получить с помощью свойства WpfAnnotationViewer.FocusedAnnotationData.

    Коллекция видов аннотаций любого изображения, загруженного в просмотрщик изображений, доступна с помощью свойства WpfAnnotationViewer.AnnotationViewController. Коллекцию видов аннотаций сфокусированного изображения можно получить с помощью свойства WpfAnnotationViewer.AnnotationViewCollection. Вид выбранной аннотации сфокусированного изображения можно получить с помощью свойства WpfAnnotationViewer.FocusedAnnotationView.

    WpfAnnotationViewer вызывает событие WpfAnnotationViewer.AnnotationDataControllerChanged при изменении коллекции изображений. WpfAnnotationViewer вызывает событие WpfAnnotationViewer.AnnotationViewCollectionChanged при изменении сфокусированного изображения. WpfAnnotationViewer вызывает события WpfAnnotationViewer.FocusedAnnotationViewChanging и WpfAnnotationViewer.FocusedAnnotationViewChanged при изменении сфокусированной аннотации.


    Взаимодействие с аннотациями в WPF просмотрщике изображений с аннотациями

    Класс WpfAnnotationViewer содержит 2 визуальных инструмента, которые упрощают и делают более удобной работу с аннотациями.

    Первый предназначен для просмотра, взаимодействия и редактирования коллекции аннотаций сфокусированного изображения. Доступ к этому визуальному инструменту можно получить с помощью свойства WpfAnnotationViewer.AnnotationVisualTool. Подробную информацию о WpfAnnotationVisualTool можно найти в статье Просмотр и преобразование аннотаций. Взаимодействие с аннотациями.

    Второй визуальный инструмент позволяет выделять несколько аннотаций на изображении с помощью прямоугольного выделения. Доступ к нему можно получить с помощью свойства WpfAnnotationViewer.AnnotationSelectionTool.

    По умолчанию класс WpfAnnotationViewer создает составной визуальный инструмент, который сочетает в себе функциональность WpfAnnotationViewer.AnnotationVisualTool и WpfAnnotationViewer.AnnotationSelectionTool для более удобного взаимодействия с аннотациями. Также визуальные инструменты можно использовать отдельно.

    Вот C#/VB.NET код, который демонстрирует, как создать WpfAnnotationViewer, который может прокручивать изображение и редактировать/выбирать аннотации выделенного изображения:
    public void SetCompositeVisualTool(Vintasoft.Imaging.Annotation.Wpf.UI.WpfAnnotationViewer annotationViewer)
    {
        annotationViewer.VisualTool = 
            new Vintasoft.Imaging.Wpf.UI.VisualTools.WpfCompositeVisualTool(
                annotationViewer.AnnotationVisualTool,
                annotationViewer.AnnotationSelectionTool,
                new WpfScrollPages());
    }
    
    Public Sub SetCompositeVisualTool(annotationViewer As Vintasoft.Imaging.Annotation.Wpf.UI.WpfAnnotationViewer)
        annotationViewer.VisualTool = New Vintasoft.Imaging.Wpf.UI.VisualTools.WpfCompositeVisualTool(annotationViewer.AnnotationVisualTool, annotationViewer.AnnotationSelectionTool, New WpfScrollPages())
    End Sub
    


    Использование различных режимов взаимодействия с аннотациями в WPF просмотрщике изображений с аннотациями.

    WpfAnnotationViewer класс позволяет выбрать режим взаимодействия между пользователем и аннотациями, используя свойство WpfAnnotationViewer.AnnotationInteractionMode. Доступны следующие режимы: События WpfAnnotationViewer.AnnotationInteractionModeChanging и WpfAnnotationViewer.AnnotationInteractionModeChanged генерируются до и после изменения режима взаимодействия между пользователем и аннотациями в просмотрщике.

    Подробную информацию о режимах взаимодействия пользователя с аннотациями можно найти в статье "Просмотр и преобразование аннотаций. Взаимодействие с аннотациями."


    Взаимодействие с аннотациями в WPF просмотрщике изображений с аннотациями на сенсорном экране

    По умолчанию визуальный инструмент аннотаций имеет интерактивные области, которые удобно использовать, если пользователь использует мышь для взаимодействия с аннотацией. Области взаимодействия по умолчанию неудобно использовать, если пользователь работает с сенсорным экраном и взаимодействует с аннотациями пальцами. Пальцы всегда толще курсора мыши, поэтому для комфортного взаимодействия с аннотациями на сенсорном экране области взаимодействия должны быть больше. Класс WpfAnnotationInteractionAreaAppearanceManager позволяет управлять настройками областей взаимодействия визуального инструмента.

    Вот C#/VB.NET код, который демонстрирует, как изменить радиус и цвет точек, что позволяют масштабировать и вращать аннотации:
    
    // ...
    
    /// <summary>
    /// Manager of interaction areas.
    /// </summary>
    Vintasoft.Imaging.Pdf.Wpf.UI.Annotations.WpfPdfInteractionAreaAppearanceManager _interactionAreaAppearanceManager;
    
    // ...
    
    
    /// <summary>
    /// Initializes a new instance of the <see cref="MainWindow"/> class.
    /// </summary>
    public MainWindow()
    {
        // ...
    
        _interactionAreaAppearanceManager = CreateCustomInteractionAreaAppearanceManager(annotationImageViewer1.AnnotationVisualTool);
    
        // ...
    }
    
    // ...
    
    /// <summary>
    /// Creates the custom interaction area appearance manager.
    /// </summary>
    /// <param name="visualTool">The visual tool.</param>
    /// <returns>
    /// The custom interaction area appearance manager.
    /// </returns>
    public Vintasoft.Imaging.Pdf.Wpf.UI.Annotations.WpfPdfInteractionAreaAppearanceManager CreateCustomInteractionAreaAppearanceManager(
        Vintasoft.Imaging.Annotation.Wpf.UI.VisualTools.WpfAnnotationVisualTool visualTool)
    {
        // create manager
        Vintasoft.Imaging.Pdf.Wpf.UI.Annotations.WpfPdfInteractionAreaAppearanceManager manager =
            new Vintasoft.Imaging.Pdf.Wpf.UI.Annotations.WpfPdfInteractionAreaAppearanceManager();
        manager.VisualTool = visualTool;
    
        // begin the initialization of manager
        manager.BeginInit();
    
        // resize point
    
        manager.ResizePointsRadius = 10;
        manager.ResizePointsInteractionRadius = 10;
        manager.ResizePointsBackgroundColor = System.Windows.Media.Color.FromArgb(128, 255, 255, 0);
    
        // rotation point
    
        manager.RotationPointDistance = 30;
        manager.RotationPointRadius = 10;
        manager.RotationPointInteractionRadius = 10;
        manager.RotationPointBackgroundColor = System.Windows.Media.Color.FromArgb(128, 255, 192, 203);
    
        // end the initialization of manager
        manager.EndInit();
    
        // return the manager
        return manager;
    }
    
    // ...
    
    /// <summary>
    /// Main form is closed.
    /// </summary>
    protected override void OnClosed(System.EventArgs e)
    {
        base.OnClosed(e);
    
        _interactionAreaAppearanceManager.Dispose();
    }
    
    // ...
    
    
    
    ' ...
    
    ''' <summary>
    ''' Manager of interaction areas.
    ''' </summary>
    Private _interactionAreaAppearanceManager As Vintasoft.Imaging.Pdf.Wpf.UI.Annotations.WpfPdfInteractionAreaAppearanceManager
    
    ' ...
    
    
    ''' <summary>
    ''' Initializes a new instance of the <see cref="MainWindow"/> class.
    ''' </summary>
    Public Sub New()
        ' ...
    
    
            ' ...
        _interactionAreaAppearanceManager = CreateCustomInteractionAreaAppearanceManager(annotationImageViewer1.AnnotationVisualTool)
    End Sub
    
    ' ...
    
    ''' <summary>
    ''' Creates the custom interaction area appearance manager.
    ''' </summary>
    ''' <param name="visualTool">The visual tool.</param>
    ''' <returns>
    ''' The custom interaction area appearance manager.
    ''' </returns>
    Public Function CreateCustomInteractionAreaAppearanceManager(visualTool As Vintasoft.Imaging.Annotation.Wpf.UI.VisualTools.WpfAnnotationVisualTool) As Vintasoft.Imaging.Pdf.Wpf.UI.Annotations.WpfPdfInteractionAreaAppearanceManager
        ' create manager
        Dim manager As New Vintasoft.Imaging.Pdf.Wpf.UI.Annotations.WpfPdfInteractionAreaAppearanceManager()
        manager.VisualTool = visualTool
    
        ' begin the initialization of manager
        manager.BeginInit()
    
        ' resize point
    
        manager.ResizePointsRadius = 10
        manager.ResizePointsInteractionRadius = 10
        manager.ResizePointsBackgroundColor = System.Windows.Media.Color.FromArgb(128, 255, 255, 0)
    
        ' rotation point
    
        manager.RotationPointDistance = 30
        manager.RotationPointRadius = 10
        manager.RotationPointInteractionRadius = 10
        manager.RotationPointBackgroundColor = System.Windows.Media.Color.FromArgb(128, 255, 192, 203)
    
        ' end the initialization of manager
        manager.EndInit()
    
        ' return the manager
        Return manager
    End Function
    
    ' ...
    
    ''' <summary>
    ''' Main form is closed.
    ''' </summary>
    Protected Overrides Sub OnClosed(e As System.EventArgs)
        MyBase.OnClosed(e)
    
        _interactionAreaAppearanceManager.Dispose()
    End Sub
    
    ' ...
    
    


    Ограничение построения/преобразования аннотаций в области изображения в WPF просмотрщике изображений с аннотациями

    WpfAnnotationViewer позволяет ограничить область, в которой аннотации могут быть построены или преобразованы. Эту функцию можно включить с помощью свойства WpfAnnotationViewer.IsAnnotationBoundingRectEnabled. Свойство WpfAnnotationViewer.AnnotationBoundingRect позволяет указать область изображения, в которой можно создавать или трансформировать аннотации.


    Выбор одной или несколькчх аннотаций в WPF просмотрщике изображений с аннотациями.

    По умолчанию класс WpfAnnotationViewer позволяет выбрать несколько аннотаций. Выбранную коллекцию аннотаций можно получить с помощью свойства WpfAnnotationViewer.SelectedAnnotations. Возможность выбора нескольких аннотаций можно отключить с помощью свойства WpfAnnotationViewer.AnnotationMultiSelect.

    Подробную информацию о принципах выбора аннотаций можно найти в статье "Просмотр и преобразование аннотаций. Взаимодействие с аннотациями."


    Построение аннотации в WPF просмотрщике изображений с аннотациями

    Метод WpfAnnotationViewer.AddAndBuildAnnotation позволяет запустить процесс построения аннотации, метод WpfAnnotationViewer.FinishAnnotationBuilding позволяет завершить процесс построения аннотации, метод WpfAnnotationViewer.CancelAnnotationBuilding позволяет отменить процесс построения аннотации.
    WpfAnnotationViewer вызывает событие WpfAnnotationViewer.AnnotationBuildingStarted при запуске процесса построения аннотации, WpfAnnotationViewer вызывает событие WpfAnnotationViewer.AnnotationBuildingFinished при завершении процесса построения аннотации, WpfAnnotationViewer вызывает WpfAnnotationViewer.AnnotationBuildingCanceled при отмене процесса построения аннотации.

    Подробную информацию о принципах выбора аннотаций можно найти в статье "Просмотр и преобразование аннотаций. Взаимодействие с аннотациями."


    Преобразование аннотации в WPF просмотрщике изображений с аннотациями

    Преобразование выделенной аннотации можно запустить с помощью мыши.
    WpfAnnotationViewer вызывает событие WpfAnnotationViewer.AnnotationTransformingStarted при запуске процесса преобразования аннотации, WpfAnnotationViewer вызывает событие WpfAnnotationViewer.AnnotationTransformingFinished при завершении процесса преобразования аннотации.

    Подробную информацию о принципах выбора аннотаций можно найти в статье "Просмотр и преобразование аннотаций. Взаимодействие с аннотациями."


    Расширение функциональности WPF просмотрщика изображений с аннотациями

    Класс WpfAnnotationViewer имеет открытую архитектуру и позволяет изменять практически любую функциональность в производных классах.