Просмотр изображений с аннотациями в WinForms
В этом разделе
Класс
AnnotationViewer наследуется от класса
ImageViewer и предназначен для просмотра изображений с аннотациями.
Класс
AnnotationViewer расширяет функциональность
ImageViewer и:
- обеспечивает доступ к коллекции аннотаций изображения
- содержит визуальные инструменты, которые упрощают и делают более удобной работу с аннотациями
- позволяет выбрать режим взаимодействия между пользователем и аннотациями
- позволяет выбрать одну или несколько аннотаций
- позволяет определить область изображения, в которой можно построить или преобразовать аннотацию
- позволяет создать аннотацию
- позволяет трансформировать аннотацию
- позволяет расширить существующую функциональность
Программный доступ к аннотациям в WinForms просмотрщике изображений с аннотациями
Доступ к коллекции данных аннотаций любого изображения, загруженного в просмотрщик изображений, можно получить с помощью свойства
AnnotationViewer.AnnotationDataController. Коллекцию данных аннотаций сфокусированного изображения можно получить с помощью свойства
AnnotationViewer.AnnotationDataCollection. Данные выбранной аннотации сфокусированного изображения можно получить с помощью свойства
AnnotationViewer.FocusedAnnotationData.
Коллекция видов аннотаций любого изображения, загруженного в просмотрщик изображений, доступна с помощью свойства
AnnotationViewer.AnnotationViewController. Коллекцию видов аннотаций сфокусированного изображения можно получить с помощью свойства
AnnotationViewer.AnnotationViewCollection. Вид выбранной аннотации сфокусированного изображения можно получить с помощью свойства
AnnotationViewer.FocusedAnnotationView.
AnnotationViewer вызывает событие
AnnotationViewer.AnnotationDataControllerChanged при изменении коллекции изображений.
AnnotationViewer вызывает событие
AnnotationViewer.AnnotationViewCollectionChanged при изменении сфокусированного изображения.
AnnotationViewer вызывает события
AnnotationViewer.FocusedAnnotationViewChanging и
AnnotationViewer.FocusedAnnotationViewChanged при изменении сфокусированной аннотации.
Взаимодействие с аннотациями в WinForms просмотрщике изображений с аннотациями
Класс
AnnotationViewer содержит 2 визуальных инструмента, которые упрощают и делают более удобной работу с аннотациями.
Первый предназначен для просмотра, взаимодействия и редактирования коллекции аннотаций сфокусированного изображения. Доступ к этому визуальному инструменту можно получить с помощью свойства
AnnotationViewer.AnnotationVisualTool. Подробную информацию о классе
AnnotationVisualTool можно найти в статье
Просмотр и преобразование аннотаций. Взаимодействие с аннотациями.
Второй визуальный инструмент позволяет выделять несколько аннотаций на изображении с помощью прямоугольного выделения. Доступ к нему можно получить с помощью свойства
AnnotationViewer.AnnotationSelectionTool.
По умолчанию класс
AnnotationViewer создает составной визуальный инструмент, который сочетает в себе функциональность
AnnotationViewer.AnnotationVisualTool и
AnnotationViewer.AnnotationSelectionTool для более удобного взаимодействия с аннотациями. Также визуальные инструменты можно использовать отдельно.
Вот C#/VB.NET код, который демонстрирует, как создать
AnnotationViewer, который может прокручивать изображение и редактировать/выбирать аннотации выделенного изображения:
public void SetCompositeVisualTool(
Vintasoft.Imaging.Annotation.UI.AnnotationViewer annotationViewer)
{
annotationViewer.VisualTool =
new Vintasoft.Imaging.UI.VisualTools.CompositeVisualTool(
annotationViewer.AnnotationVisualTool,
annotationViewer.AnnotationSelectionTool,
new ScrollPages());
}
Public Sub SetCompositeVisualTool(annotationViewer As Vintasoft.Imaging.Annotation.UI.AnnotationViewer)
annotationViewer.VisualTool = New Vintasoft.Imaging.UI.VisualTools.CompositeVisualTool(annotationViewer.AnnotationVisualTool, annotationViewer.AnnotationSelectionTool, New ScrollPages())
End Sub
Использование различных режимов взаимодействия аннотаций в WinForms просмотрщике изображений с аннотациями
Класс
AnnotationViewer позволяет выбирать режим взаимодействия между пользователь и аннотациями с использованием свойства
AnnotationViewer.AnnotationInteractionMode. Доступны следующие режимы:
- None - визуальный инструмент просто отображает аннотации, взаимодействие с аннотациями НЕ возможно, редактирование аннотаций НЕ возможно.
- View - визуальный инструмент отображает аннотации и возможно с ними взаимодействовать, редактирование аннотаций НЕ возможно.
- Author - визуальный инструмент отображает аннотации и возможно их редактирование, взаимодействие с аннотациями НЕ возможно.
Собятия
AnnotationViewer.AnnotationInteractionModeChanging и
AnnotationViewer.AnnotationInteractionModeChanged генерируются до и после изменения режима взаимодействия между пользователем и аннотациями в просмотрщике.
Подробную информацию о режимах взаимодействия пользователя с аннотациями можно найти в статье
"Просмотр и преобразование аннотаций. Взаимодействие с аннотациями."
Взаимодействие с аннотациями в WinForms просмотрщике изображений с аннотациями на сенсорном экране
По умолчанию визуальный инструмент аннотаций имеет интерактивные области, которые удобно использовать, если пользователь использует мышь для взаимодействия с аннотацией. Области взаимодействия по умолчанию неудобно использовать, если пользователь работает с сенсорным экраном и взаимодействует с аннотациями пальцами. Пальцы всегда толще курсора мыши, поэтому для комфортного взаимодействия с аннотациями на сенсорном экране области взаимодействия должны быть больше. Класс
AnnotationInteractionAreaAppearanceManager позволяет управлять настройками областей взаимодействия визуального инструмента.
Вот C#/VB.NET код, который демонстрирует, как изменить радиус и цвет точек, что позволяют масштабировать и вращать аннотации:
// ...
/// <summary>
/// Manager of interaction areas.
/// </summary>
Vintasoft.Imaging.Annotation.UI.VisualTools.AnnotationInteractionAreaAppearanceManager _interactionAreaAppearanceManager;
// ...
/// <summary>
/// Initializes a new instance of the <see cref="MainForm"/> class.
/// </summary>
public MainForm()
{
// ...
_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.Annotation.UI.VisualTools.AnnotationInteractionAreaAppearanceManager CreateCustomInteractionAreaAppearanceManager(
Vintasoft.Imaging.Annotation.UI.VisualTools.AnnotationVisualTool visualTool)
{
// create manager
Vintasoft.Imaging.Annotation.UI.VisualTools.AnnotationInteractionAreaAppearanceManager manager =
new Vintasoft.Imaging.Annotation.UI.VisualTools.AnnotationInteractionAreaAppearanceManager();
manager.VisualTool = visualTool;
// begin the initialization of manager
manager.BeginInit();
// resize point
manager.ResizePointsRadius = 10;
manager.ResizePointsInteractionRadius = 10;
manager.ResizePointsBackgroundColor = System.Drawing.Color.FromArgb(128, System.Drawing.Color.Yellow);
// rotation point
manager.RotationPointDistance = 30;
manager.RotationPointRadius = 10;
manager.RotationPointInteractionRadius = 10;
manager.RotationPointBackgroundColor = System.Drawing.Color.FromArgb(128, System.Drawing.Color.Pink);
// end the initialization of manager
manager.EndInit();
// return the manager
return manager;
}
// ...
/// <summary>
/// Main form is closed.
/// </summary>
protected override void OnFormClosed(System.Windows.Forms.FormClosedEventArgs e)
{
base.OnFormClosed(e);
_interactionAreaAppearanceManager.Dispose();
}
// ...
' ...
''' <summary>
''' Manager of interaction areas.
''' </summary>
Private _interactionAreaAppearanceManager As Vintasoft.Imaging.Annotation.UI.VisualTools.AnnotationInteractionAreaAppearanceManager
' ...
''' <summary>
''' Initializes a new instance of the <see cref="MainForm"/> 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.UI.VisualTools.AnnotationVisualTool) As Vintasoft.Imaging.Annotation.UI.VisualTools.AnnotationInteractionAreaAppearanceManager
' create manager
Dim manager As New Vintasoft.Imaging.Annotation.UI.VisualTools.AnnotationInteractionAreaAppearanceManager()
manager.VisualTool = visualTool
' begin the initialization of manager
manager.BeginInit()
' resize point
manager.ResizePointsRadius = 10
manager.ResizePointsInteractionRadius = 10
manager.ResizePointsBackgroundColor = System.Drawing.Color.FromArgb(128, System.Drawing.Color.Yellow)
' rotation point
manager.RotationPointDistance = 30
manager.RotationPointRadius = 10
manager.RotationPointInteractionRadius = 10
manager.RotationPointBackgroundColor = System.Drawing.Color.FromArgb(128, System.Drawing.Color.Pink)
' end the initialization of manager
manager.EndInit()
' return the manager
Return manager
End Function
' ...
''' <summary>
''' Main form is closed.
''' </summary>
Protected Overrides Sub OnFormClosed(e As System.Windows.Forms.FormClosedEventArgs)
MyBase.OnFormClosed(e)
_interactionAreaAppearanceManager.Dispose()
End Sub
' ...
Ограничение построения/преобразования аннотаций в области изображения в WinForms просмотрщике изображений с аннотациями.
AnnotationViewer позволяет ограничить область, в которой аннотация может быть построена или преобразована. Эту функцию можно включить с помощью свойства
AnnotationViewer.IsAnnotationBoundingRectEnabled. Свойство
AnnotationViewer.AnnotationBoundingRect позволяет задать область изображения, в которой можно построить или преобразовать аннотацию.
Выбор одной или нескольких аннотаций в WinForms просмотрщике изображений с аннотациями
По умолчанию, класс
AnnotationViewer позволяет выбрать несколько аннотаций. Выбранную коллекцию аннотаций можно получить с помощью свойства
AnnotationViewer.SelectedAnnotations. Возможность выбора нескольких аннотаций можно отключить с помощью свойства
AnnotationViewer.AnnotationMultiSelect.
Подробную информацию о принципах выбора аннотаций можно найти в статье
"Просмотр и преобразование аннотаций. Взаимодействие с аннотациями."
Построение аннотации в WinForms просмотрщике изображений с аннотациями
Метод
AnnotationViewer.AddAndBuildAnnotation позволяет запустить процесс построения аннотаций, метод
AnnotationViewer.FinishAnnotationBuilding позволяет завершить процесс построения аннотации, метод
AnnotationViewer.CancelAnnotationBuilding позволяет отменить процесс построения аннотации.
AnnotationViewer вызывает событие
AnnotationViewer.AnnotationBuildingStarted при запуске процесса создания аннотации,
AnnotationViewer вызывает событие
AnnotationViewer.AnnotationBuildingFinished при завершении процесса создания аннотации,
AnnotationViewer вызывает
AnnotationViewer.AnnotationBuildingCanceled событие, когда процесс построения аннотации отменяется.
Подробную информацию о принципах выбора аннотаций можно найти в статье
"Просмотр и преобразование аннотаций. Взаимодействие с аннотациями."
Преобразование аннотации в WinForms просмотрщике изображение с аннотациями
Преобразование выделенной аннотации можно запустить с помощью мыши.
AnnotationViewer вызывает событие
AnnotationViewer.AnnotationTransformingStarted при запуске процесса преобразования аннотации,
AnnotationViewer вызывает событие
AnnotationViewer.AnnotationTransformingFinished при завершении процесса преобразования аннотации.
Подробную информацию о принципах выбора аннотаций можно найти в статье
"Просмотр и преобразование аннотаций. Взаимодействие с аннотациями."
Расширение функциональности WinForms просмотрщика изображений с аннотациями
Класс
AnnotationViewer имеет открытую архитектуру и позволяет изменять практически любую функциональность в производных классах.