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

    ThumbnailViewer может работать отдельно
    ThumbnailViewer может работать как "ведомый просмотрщик" другого ImageViewer или ThumbnailViewer

    Вот C#/VB.NET код, который демонстрирует, как загрузить изображения в ImageViewer, связать ImageViewer с ThumbnailViewer-ом, инвертировать первое изображение в коллекции изображений - изображение в ImageViewer и миниатюра в ThumbnailViewer будут инвертированы:
    imageViewer1.Images.Add("myimages.tif");
    thumbnailViewer1.MasterViewer = imageViewer1;
    imageViewer1.Images[0].Invert();
    
    imageViewer1.Images.Add("myimages.tif")
    thumbnailViewer1.MasterViewer = imageViewer1
    imageViewer1.Images(0).Invert()
    


    Размер миниатюры

    Миниатюры имеют 2 размера:
    "Физический размер" миниатюр можно задать с помощью свойства ThumbnailViewer.ThumbnailSize. Минимальный "физический размер" миниатюры - 32x32 пикселя, максимальный "физический размер" миниатюры - 1024x1024 пикселей.

    "Видимый размер" миниатюр можно установить с помощью свойства ThumbnailViewer.ThumbnailScale. "Видимый размер" рассчитывается как произведение "физического размера" и коэффициента масштабирования.
    Вот список коэффициентов масштабирования:
    2 блока памяти можно выделить для миниатюр:
    Старые миниатюры будут уничтожены (используемая память будет освобождена) и созданы новые миниатюры (будет выделена новая "память для исходных миниатюр") когда свойство ThumbnailViewer.ThumbnailSize будет изменено.

    Существующие миниатюры масштабируются при изменении ThumbnailViewer.ThumbnailScale, выделяется "память для масштабированных миниатюр", если ThumbnailViewer.ThumbnailScale не равно "Normal".

    Важно : Не используйте миниатюры большого размера, если в этом нет необходимости.


    Внешний вид миниатюры и подпись к миниатюре

    Определение внешнего вида миниатюры с помощью свойств

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

    ThumbnailViewer имеет свойства, которые позволяют определить "стандартный" внешний вид миниатюр:
    Также ThumbnailViewer позволяет на лету устанавливать внешний вид миниатюры. Для этого необходимо подписаться на событие ThumbnailViewer.ThumbnailAppearanceSelected и изменить внешний вид миниатюры в обработчике события.

    Определение подписи к миниатюрам с помощью свойств

    Класс ThumbnailCaption позволяет определить заголовок миниатюры: формат заголовка или пользовательский текст, отступ, привязку, шрифт текста, цвет текста.
    Вот C#/VB.NET код, который демонстрирует, как настроить заголовок миниатюры с помощью события ThumbnailCaption.CaptionFormatted:
    /// <summary>
    /// Sets the custom thumbnail caption.
    /// </summary>
    /// <param name="thumbnailViewer">The thumbnail viewer.</param>
    public static void SetCustomThumbnailCaption(Vintasoft.Imaging.UI.ThumbnailViewer thumbnailViewer)
    {
        thumbnailViewer.ThumbnailCaption.CaptionFormatted += ThumbnailCaption_CaptionFormatted;
        thumbnailViewer.ThumbnailCaption.IsVisible = true;
    }
    
    /// <summary>
    /// Handles the CaptionFormatted event of the ThumbnailCaption.
    /// </summary>
    /// <param name="sender">The source of the event.</param>
    /// <param name="e">The <see cref="Vintasoft.Imaging.UI.ThumbnailCaptionFormattedEventArgs"/> instance containing the event data.</param>
    private static void ThumbnailCaption_CaptionFormatted(object sender, Vintasoft.Imaging.UI.ThumbnailCaptionFormattedEventArgs e)
    {
        Vintasoft.Imaging.VintasoftImage image = e.Thumbnail.Source;
        int imageIndex = e.ThumbnailViewer.Images.IndexOf(image);
        if (e.ThumbnailViewer.SelectedIndices.Contains(imageIndex))
        {
            e.Caption = "Selected";
        }
        else
        {
            e.Caption = string.Format("{0}, page {1}", System.IO.Path.GetFileName(image.SourceInfo.Filename), image.SourceInfo.PageIndex + 1);
        }
    }
    
    ''' <summary>
    ''' Sets the custom thumbnail caption.
    ''' </summary>
    ''' <param name="thumbnailViewer">The thumbnail viewer.</param>
    Public Shared Sub SetCustomThumbnailCaption(thumbnailViewer As Vintasoft.Imaging.UI.ThumbnailViewer)
        AddHandler thumbnailViewer.ThumbnailCaption.CaptionFormatted, AddressOf ThumbnailCaption_CaptionFormatted
        thumbnailViewer.ThumbnailCaption.IsVisible = True
    End Sub
    
    ''' <summary>
    ''' Handles the CaptionFormatted event of the ThumbnailCaption.
    ''' </summary>
    ''' <param name="sender">The source of the event.</param>
    ''' <param name="e">The <see cref="Vintasoft.Imaging.UI.ThumbnailCaptionFormattedEventArgs"/> instance containing the event data.</param>
    Private Shared Sub ThumbnailCaption_CaptionFormatted(sender As Object, e As Vintasoft.Imaging.UI.ThumbnailCaptionFormattedEventArgs)
        Dim image As Vintasoft.Imaging.VintasoftImage = e.Thumbnail.Source
        Dim imageIndex As Integer = e.ThumbnailViewer.Images.IndexOf(image)
        If e.ThumbnailViewer.SelectedIndices.Contains(imageIndex) Then
            e.Caption = "Selected"
        Else
            e.Caption = String.Format("{0}, page {1}", System.IO.Path.GetFileName(image.SourceInfo.Filename), image.SourceInfo.PageIndex + 1)
        End If
    End Sub
    

    Свойство ThumbnailViewer.ThumbnailCaption позволяет получить или установить подпись к миниатюрам в просмотрщике миниатюр.

    Рисование миниатюры в просмотрщике миниатюр.

    Если вы не можете определить внешний вид миниатюры или подпись к миниатюре с помощью свойств, вы можете использовать низкоуровневую функциональность - события ThumbnailViewer.ThumbnailPainting и ThumbnailViewer.ThumbnailPainted, т. е. рисовать графику под миниатюрой в обработчике события ThumbnailViewer.ThumbnailPainted и/или рисовать графику поверх миниатюры в обработчике события ThumbnailViewer.ThumbnailPainted.

    Примеры

    Проекты 'Thumbnail Viewer Demo' и 'Simple Demos' показывают, как создавать просмотрщик миниатюр с настраиваемым внешним видом.


    Всплывающая подсказка для миниатюр

    ThumbnailViewer позволяет отображать всплывающую подсказку для миниатюр.

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

    События просмотрщика миниатюр

    ThumbnailViewer может вызывать следующие события:

    Рендеринг миниатюр

    ThumbnailViewer может рендерить миниатюры в несколько потоков. Количество потоков рендеринга можно получить/установить с помощью свойства ThumbnailViewer.ThumbnailRenderingThreadCount. По умолчанию ThumbnailViewer рендерит миниатюры в одном потоке.

    Все миниатюры генерируются по умолчанию. Свойство ThumbnailViewer.GenerateOnlyVisibleThumbnails позволяет генерировать только видимые миниатюры, это может быть необходимо на медленных компьютерах.


    Контекстные меню просмотрщика миниатюр

    Свойство ThumbnailViewer.ContextMenuStrip позволяет установить контекстное меню, связанное с просмотрщиком миниатюр.

    Свойство ThumbnailViewer.ThumbnailContextMenuStrip позволяет установить контекстное меню, связанное с одной миниатюрой. Свойство ThumbnailViewer.DisableThumbnailContextMenu позволяет отключить контекстное меню для одной миниатюры.


    Горячие клавиши просмотрщика миниатюр

    ThumbnailViewer имеет горячие клавиши:
    Горячие клавиши можно включить/отключить с помощью свойств ImageViewerBase.ShortcutCopy , ImageViewerBase.ShortcutCut, ImageViewerBase.ShortcutInsert, ImageViewerBase.ShortcutDelete, ImageViewerBase.ShortcutSelectAll.
    Поведение горячих клавиш можно переопределить с помощью методов ImageViewerBase.DoCopy, ImageViewerBase.DoCut, ImageViewerBase.DoInsert, ImageViewerBase.DoDelete, ImageViewerBase.DoSelectAll.


    Выбор нескольких миниатюр в просмотрщике миниатюр

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

    Свойство ThumbnailViewer.SelectedIndices - это "снимок" коллекции индексов (только чтение) выделенных миниатюр. Если вы работаете с копией коллекции, то необходимо учитывать, что свойство ThumbnailViewer.SelectedIndices может меняться в зависимости от действий пользователя и ваша копия может стать неактуальной.


    Перетаскивание миниатюр в просмотрщике миниатюр

    ThumbnailViewer позволяет перетаскивать миниатюры. Чтобы перетащить миниатюру, просто наведите на нее курсор, зажмите левую кнопку мыши и перетащите курсор в нужное положение. Процесс перетаскивания миниатюр изменяет их индексы в коллекции ImageViewerBase.Images, а это означает, что индексы в коллекции ThumbnailViewer.SelectedIndices также изменятся. Вот почему мы не рекомендуем использовать копию этой коллекции.

    Функция перетаскивания может быть включена/отключена с помощью свойств ThumbnailViewer.AllowDrop или ThumbnailViewer.AllowDrag.