VintaSoft Imaging .NET SDK 14.0: Документация для .NET разработчика
В этом разделе
    Вид аннотации в WPF
    В этом разделе
    Класс WpfAnnotationView всегда создается на основе класса AnnotationData и определяет внешний вид аннотации и способ взаимодействия пользователя с аннотацией.
    Связь между классами, производными от AnnotationData и WpfAnnotationView, регистрируется с помощью метода WpfAnnotationViewFactory.RegisterViewForAnnotationData.

    Как и в случае с классами, производными от класса AnnotationData, классы, производные от класса WpfAnnotationView, делятся на 3 типа:
    Класс WpfAnnotationView содержит свойство WpfAnnotationView.Data, которое позволяет получить ссылку на связанный экземпляр класса AnnotationData. Также класс WpfAnnotationView содержит набор свойств, аналогичных свойствам класса AnnotationData, которые позволяют передавать свойства аннотации через WpfAnnotationView.

    Вот C#/VB.NET код, который демонстрирует, как создать вид для аннотации EllipseAnnotationData:
    public static Vintasoft.Imaging.Annotation.Wpf.UI.WpfAnnotationView CreateViewForEllipseAnnotationData(
        Vintasoft.Imaging.Annotation.EllipseAnnotationData ellipseAnnotation)
    {
        return new Vintasoft.Imaging.Annotation.Wpf.UI.WpfEllipseAnnotationView(ellipseAnnotation);
    }
    
    Public Shared Function CreateViewForEllipseAnnotationData(ellipseAnnotation As Vintasoft.Imaging.Annotation.EllipseAnnotationData) As Vintasoft.Imaging.Annotation.Wpf.UI.WpfAnnotationView
        Return New Vintasoft.Imaging.Annotation.Wpf.UI.WpfEllipseAnnotationView(ellipseAnnotation)
    End Function
    


    Прямоугольники, ограничивающие аннотацию

    Вид аннотации имеет несколько типов ограничивающих прямоугольников. Для решения различных задач, связанных с корректным рисованием и взаимодействием с аннотацией, используются следующие типы:

    Рендеринг аннотаций в контексте рисования

    Класс WpfAnnotationView предоставляет метод WpfAnnotationView.Render, который позволяет рендерить аннотации на указанном объекте System.Windows.Media.DrawingContext.

    Вот C#/VB.NET код, который демонстрирует, как отрендерить указанную аннотацию на указанном изображении:
    public static void DrawAnnotationOnImage(
        Vintasoft.Imaging.Annotation.Wpf.UI.WpfAnnotationViewCollection annotations,
        Vintasoft.Imaging.VintasoftImage image)
    {
        annotations.Draw(image, (Vintasoft.Imaging.VintasoftImage)image.Clone());
    }
    
    Public Shared Sub DrawAnnotationOnImage(annotations As Vintasoft.Imaging.Annotation.Wpf.UI.WpfAnnotationViewCollection, image As Vintasoft.Imaging.VintasoftImage)
        annotations.Draw(image, DirectCast(image.Clone(), Vintasoft.Imaging.VintasoftImage))
    End Sub
    


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

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

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

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

    Режим выбора/преобразования аннотации, основанной на наборе точек, можно изменить с помощью свойства WpfLineAnnotationViewBase.GripMode.


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

    Свойство WpfAnnotationView.Builder определяет интерактивный контроллер, который используется для построения аннотации.
    Свойство WpfAnnotationView.Transformer определяет интерактивный контроллер, который используется для преобразования аннотации.

    Кроме того, класс WpfAnnotationView имеет свойство WpfAnnotationView.InteractionController, которое определяет используемый в данный момент интерактивный контроллер.
    Подробную информацию о построении и преобразовании аннотаций можно найти в статье: Создание и преобразование аннотаций в WPF .


    Отслеживание состояния аннотации

    Класс WpfAnnotationView предоставляет события, которые позволяют отслеживать состояние аннотации:

    Коллекция аннотаций

    Класс WpfAnnotationViewCollection всегда создается на основе класса AnnotationDataCollection и представляет собой коллекцию представлений аннотаций, которые связаны с данными аннотаций из AnnotationDataCollection.
    Класс WpfAnnotationViewCollection синхронно вносит изменения в свою коллекцию и в связанный AnnotationDataCollection.
    Класс WpfAnnotationViewCollection предоставляет возможность добавлять, удалять, изменять порядок элементов, объединять элементы, преобразовывать в массив элементов WpfAnnotationView и получать доступ к AnnotationDataCollection. Также класс WpfAnnotationViewCollection позволяет: