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

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

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


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

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

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

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

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


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

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

    Вид миниатюр в WpfThumbnailViewer можно изменить с помощью WPF стиля.

    Свойство WpfThumbnailViewer.ThumbnailContainerStyle позволяет получить/установить текущий стиль миниатюр, используемый в WpfThumbnailViewer-е.

    Стандартный стиль миниатюр определен в классе ThumbnailImageItemStyle.

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

    Класс ThumbnailImageItemCaption позволяет определить заголовок миниатюры: формат заголовка или пользовательский текст, отступ, привязку, шрифт текста, цвет текста.
    Вот C#/VB.NET код, который демонстрирует, как настроить заголовок миниатюры с помощью события ThumbnailImageItemCaption.CaptionFormatted:
    /// <summary>
    /// Sets the custom thumbnail caption.
    /// </summary>
    /// <param name="thumbnailViewer">The thumbnail viewer.</param>
    public static void SetCustomThumbnailCaption(Vintasoft.Imaging.Wpf.UI.WpfThumbnailViewer 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.Wpf.UI.ThumbnailImageItemCaptionFormattedEventArgs"/> instance containing the event data.</param>
    private static void ThumbnailCaption_CaptionFormatted(object sender, Vintasoft.Imaging.Wpf.UI.ThumbnailImageItemCaptionFormattedEventArgs e)
    {
        Vintasoft.Imaging.VintasoftImage image = e.Thumbnail.Source;
        int imageIndex = e.ThumbnailViewer.Images.IndexOf(image);
        if (e.ThumbnailViewer.SelectedThumbnails.Contains(e.Thumbnail))
        {
            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.Wpf.UI.WpfThumbnailViewer)
        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.Wpf.UI.ThumbnailImageItemCaptionFormattedEventArgs"/> instance containing the event data.</param>
    Private Shared Sub ThumbnailCaption_CaptionFormatted(sender As Object, e As Vintasoft.Imaging.Wpf.UI.ThumbnailImageItemCaptionFormattedEventArgs)
        Dim image As Vintasoft.Imaging.VintasoftImage = e.Thumbnail.Source
        Dim imageIndex As Integer = e.ThumbnailViewer.Images.IndexOf(image)
        If e.ThumbnailViewer.SelectedThumbnails.Contains(e.Thumbnail) 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
    

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

    Примеры

    Главное окно WpfImagingDemo (файл MainWindow.xaml) содержит XAML-код, который показывает, как создать собственный стиль для миниатюр WpfThumbnailViewer-а.


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

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

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


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

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

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

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

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


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

    WpfThumbnailViewer может иметь стандартное контекстное WPF-меню как любой WPF-контрол.


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

    WpfThumbnailViewer имеет горячие клавиши:
    Горячие клавиши можно включить/отключить с помощью свойств WpfImageViewerBase.InputGestureCopy, WpfImageViewerBase.InputGestureCut, WpfImageViewerBase.InputGestureInsert, WpfImageViewerBase.InputGestureDelete, WpfThumbnailViewer.InputGestureSelectAll.
    Поведение горячих клавиш можно переопределить с помощью методов WpfImageViewerBase.GetCopyCommand, WpfImageViewerBase.GetCutCommand, WpfImageViewerBase.GetInsertCommand, WpfImageViewerBase.GetDeleteCommand.



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

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

    Свойство WpfThumbnailViewer.MultiSelect позволяет указать, что можно выбрать несколько миниатюр.


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

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

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