VintaSoft Imaging .NET SDK 14.0: Документация для .NET разработчика
В этом разделе
    Класс UserInteractionVisualTool
    В этом разделе

    Основные понятия

    UserInteractionVisualTool - это базовый класс для визуальных инструментов, которые выполняют взаимодействие между пользователем и интерактивным объектом в ImageViewer-е с помощью устройств ввода (например, клавиатуры, мыши и т. д.). Класс позволяет реализовать пользовательскую (определяемую пользователем) логику взаимодействия между набором интерактивных объектов и пользователем. Классы, производные от этого класса, представляют собой визуальные инструменты, такие как AnnotationVisualTool, RectangularSelectionTool, CustomSelectionTool.

    Основными понятиями модели интерактивного взаимодействия являются:

    Основные принципы работы модели взаимодействия

    Работу модели взаимодействия можно разделить на 5 этапов:
    1. Визуальный инструмент взаимодействия получает выбранный объект и считает его активным объектом, визуальный инструмент взаимодействия получает контроллер взаимодействия из активного объекта и считает его активным контроллером взаимодействия.
    2. Визуальный инструмент взаимодействия выполняет вызов метода UpdateInteractionAreas для активного контроллера взаимодействия и получает список областей взаимодействия, используя свойство InteractionAreas контроллера взаимодействия. Визуальный инструмент взаимодействия отображает области взаимодействия поверх других интерактивных объектов в просмотрщике изображений.
    3. Визуальный инструмент взаимодействия анализирует события, поступающие от устройств ввода (например, нажатие кнопки мыши, перемещение указателя мыши) и определяет область взаимодействия, с которой работает пользователь. События от устройств ввода преобразуются в события взаимодействия в соответствии с типом области взаимодействия, а затем направляются на активный контроллер взаимодействия с помощью метода IInteractionController.OnInteraction(InteractionEventArgs).
    4. Контроллер взаимодействия в методе OnInteraction выполняет логику взаимодействия между областью взаимодействия и интерактивным объектом. Например: Интерактивный объект поддерживает вращение, реализуя интерфейс интерактивного объекта, в котором существует свойство RotationAngle. После того, как контроллер получит событие взаимодействия с точкой вращения (точка вращения - область взаимодействия), он рассчитает угол поворота, на который необходимо повернуть объект, и изменит свойство объекта RotationAngle на необходимый угол.
    5. Когда контроллер взаимодействия изменяет какое-либо свойство, которое изменяет состояние объекта (например, угол поворота), объект генерирует событие StateChanged, на которое подписывается визуальный инструмент взаимодействия. Визуальный инструмент взаимодействия будет выполнять обновление интерактивных областей в контроллере активного взаимодействия, а затем перерисовывать интерактивный объект и интерактивные области в просмотрщике изображений.


    Иерархия интерфейсов интерактивных объектов

    IInteractiveObject - базовый интерфейс, определяющий общие характеристики всех интерактивных объектов.

    IRectangularInteractiveObject - определяет прямоугольный объект, поддерживающий вращение.

    IPointBasedInteractiveObject - определяет объект, состоящий из набора точек.

    Примечание: Тот факт, что свойства интерактивных объектов описываются иерархией интерфейсов, позволил создать интерактивные объекты, которые могли бы реализовывать сразу несколько интерфейсов интерактивных объектов. Например, объект может поддерживать изменение своих базовых точек (IPointBasedInteractiveObject), а также изменение его формы (растяжение, сжатие, поворот) с использованием прямоугольного интерфейса объекта (IRectangularInteractiveObject).



    Иерархия контроллеров взаимодействия

    Контроллеры взаимодействия для удобства разделены на 2 группы:
    IInteractionController - базовый интерфейс, определяющий общие характеристики всех интерактивных контроллеров взаимодействия.

    RectangularObjectBuilder - построитель объектов, реализующий интерфейс IRectangularInteractiveObject.

    RectangularObjectTransformer - трансформер объектов, реализующий интерфейс IRectangularInteractiveObject. Предоставляет возможность перемещать, растягивать, сжимать, вращать объект.

    PointBasedObjectPointBuilder - построитель объектов, реализующий интерфейс IPointBasedInteractiveObject. Предоставляет возможность построить объект, добавляя к нему новые точки по щелчку мыши.

    PointBasedObjectFreehandBuilder - построитель объектов, реализующий интерфейс IPointBasedInteractiveObject. Предоставляет возможность построить объект, добавляя к нему новые точки движением мыши.

    PointBasedObjectLineBuilder - построитель объектов, реализующий интерфейс IPointBasedInteractiveObject. Предоставляет возможность построить объект, состоящий из двух точек (линии).

    PointBasedObjectRectangularBuilder - построитель объектов, реализующий интерфейс IPointBasedInteractiveObject. Предоставляет возможность построить объект путем масштабирования всех его точек.

    PointBasedObjectPointTransformer - преобразователь объектов, реализующих интерфейс IPointBasedInteractiveObject. Предоставляет возможность отмечать, перемещать, удалять, добавлять точки объекта.

    PointBasedObjectRectangularTransformer - преобразователь объектов, реализующих интерфейс IPointBasedInteractiveObject. Предоставляет возможность перемещать, растягивать, сжимать, вращать объект.

    PointBasedObjectDistortionTransformer - преобразователь объектов, реализующих [IPointBasedInteractiveObject интерфейс. Предоставляет возможность применять искажения и перекос.

    CompositeInteractionController - составной контроллер взаимодействия, который может объединять работу нескольких контроллеров взаимодействия и используется для:

    Иерархия областей взаимодействия

    Базовым классом для всех областей взаимодействия является класс InteractionArea.

    Области взаимодействия для удобства разделены на 3 группы: