VintaSoft Imaging .NET SDK 15.1: Документация для .NET разработчика
В этом разделе
Просмотр миниатюр с аннотациями в WinForms
В этом разделе
Класс AnnotatedThumbnailViewer является производным от класса ThumbnailViewer и предназначен для просмотра миниатюр изображений с аннотациями.

Класс AnnotatedThumbnailViewer расширяет функциональность класса ThumbnailViewer и позволяет:
Вот C#/VB.NET код, который демонстрирует, как загрузить изображения с аннотациями из файла и отобразить их миниатюры с аннотациями:
void LoadImagesWithAnnotation(
    Vintasoft.Imaging.Annotation.UI.AnnotatedThumbnailViewer annotatedThumbnailViewer, string filename)
{
    annotatedThumbnailViewer.Images.Add(filename);
}
Private Sub LoadImagesWithAnnotation(annotatedThumbnailViewer As Vintasoft.Imaging.Annotation.UI.AnnotatedThumbnailViewer, filename As String)
    annotatedThumbnailViewer.Images.Add(filename)
End Sub


Класс AnnotatedThumbnailViewer можно использовать отдельно или вместе с классом AnnotationViewer.

Если класс AnnotatedThumbnailViewer используется отдельно, то он просто показывает аннотации на миниатюрах.

Если класс AnnotatedThumbnailViewer используется вместе с классом AnnotationViewer, то он отображает аннотации на миниатюрах и в то же время выполняет одновременное обновление миниатюры активного изображения в AnnotationViewer, когда аннотации, которые связаны с миниатюрой, изменяются (добавляется новая аннотация, трансформируется существующая аннотация и т. д.).


Для повышения производительности приложения можно не обновлять миниатюру активного изображения после каждого изменения, связанного с его аннотациями, а только после завершения преобразования аннотации, например, когда вращение аннотации полностью завершено.
Вот C#/VB.NET код, который позволяет обновлять миниатюру активного изображения только после завершения преобразования аннотации:
Vintasoft.Imaging.Annotation.UI.AnnotatedThumbnailViewer _annotatedThumbnailViewer1 = 
    new Vintasoft.Imaging.Annotation.UI.AnnotatedThumbnailViewer();
Vintasoft.Imaging.Annotation.UI.AnnotationViewer _annottionViewer1 = 
    new Vintasoft.Imaging.Annotation.UI.AnnotationViewer();

bool _isAnnotationBeginInit = false;
bool _isAnnotationTransforming = false;
bool _showAnnotationTransformationOnThumbnail = false;

void annotationViewer1_AnnotationTransformingStarted(object sender, 
    Vintasoft.Imaging.Annotation.UI.VisualTools.AnnotationViewEventArgs e)
{
    _isAnnotationTransforming = true;
    if (!_showAnnotationTransformationOnThumbnail)
    {
        _isAnnotationBeginInit = true;
        e.AnnotationView.Data.BeginInit();
    }
}

void annotationViewer1_AnnotationTransformingFinished(object sender, 
    Vintasoft.Imaging.Annotation.UI.VisualTools.AnnotationViewEventArgs e)
{
    _isAnnotationTransforming = false;
    if (_isAnnotationBeginInit)
    {
        _isAnnotationBeginInit = false;
        e.AnnotationView.Data.EndInit();
    }
}
Private _annotatedThumbnailViewer1 As New Vintasoft.Imaging.Annotation.UI.AnnotatedThumbnailViewer()
Private _annottionViewer1 As New Vintasoft.Imaging.Annotation.UI.AnnotationViewer()

Private _isAnnotationBeginInit As Boolean = False
Private _isAnnotationTransforming As Boolean = False
Private _showAnnotationTransformationOnThumbnail As Boolean = False

Private Sub annotationViewer1_AnnotationTransformingStarted(sender As Object, e As Vintasoft.Imaging.Annotation.UI.VisualTools.AnnotationViewEventArgs)
    _isAnnotationTransforming = True
    If Not _showAnnotationTransformationOnThumbnail Then
        _isAnnotationBeginInit = True
        e.AnnotationView.Data.BeginInit()
    End If
End Sub

Private Sub annotationViewer1_AnnotationTransformingFinished(sender As Object, e As Vintasoft.Imaging.Annotation.UI.VisualTools.AnnotationViewEventArgs)
    _isAnnotationTransforming = False
    If _isAnnotationBeginInit Then
        _isAnnotationBeginInit = False
        e.AnnotationView.Data.EndInit()
    End If
End Sub