Просмотр изображений с аннотациями в 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. Доступны следующие режимы:
- None - визуальный инструмент просто отображает аннотации, взаимодействие с аннотациями НЕ возможно, редактирование аннотаций НЕ возможно.
- View - визуальный инструмент отображает аннотации и возможно с ними взаимодействовать, редактирование аннотаций НЕ возможно.
- Author - визуальный инструмент отображает аннотации и возможно их редактирование, взаимодействие с аннотациями НЕ возможно.
События
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 имеет открытую архитектуру и позволяет изменять практически любую функциональность в производных классах.