Отображение значков миниатюр 128x128 пикселей или больше в сетке в ListView

Я верю тому, что Вы хотите, перечисление типа флага.

необходимо добавить, что Флаги приписывают вершине перечисления, и затем можно объединить перечисления с 'Или' ключевое слово.

Как это:

<Flags()> _
Enum CombinationEnums As Integer
  HasButton = 1
  TitleBar = 2
  ReadOnly = 4
  ETC = 8
End Enum

Примечание: числа направо являются всегда вдвое более большими (полномочия 2) - это необходимо, чтобы быть в состоянии разделить отдельные флаги, которые были установлены.

Объединение желаемые флаги с помощью Или ключевое слово:

Dim settings As CombinationEnums
settings = CombinationEnums.TitleBar Or CombinationEnums.Readonly

Это устанавливает TitleBar и Только для чтения в перечисление

Для проверки то, что было установлено:

If (settings And CombinationEnums.TitleBar) = CombinationEnums.TitleBar Then
  Window.TitleBar = True
End If
45
задан Glorfindel 27 March 2019 в 20:15
поделиться

5 ответов

Для обновления:

  1. Установите глубину цвета списка изображений в дополнение к размеру изображения (ilist.ColorDepth = ColorDepth.Depth24Bit)
  2. WinForms ListView не имеет возможности изменять интервал между значками, однако это легко сделать с помощью Win32. Вам необходимо отправить LVM_SETICONSPACING в ваш ListView (существует множество руководств по использованию функции Win32 SendMessage в .net, поэтому я думаю, что этого направления должно быть достаточно для вас).
14
ответ дан 26 November 2019 в 21:31
поделиться

Заявление об ограничении ответственности: я работаю в Atalasoft

. В нашем .NET Imaging SDK есть элемент управления эскизами изображений, DotImage

2
ответ дан 26 November 2019 в 21:31
поделиться

Создание настраиваемого элемента управления было бы неплохо. Я бы унаследовал от Panel или Usercontrol, поскольку я считаю, что оба они автоматически добавляют полосы прокрутки для контента.

Динамическое добавление контейнеров (например, PictureBoxes) и подписей для каждого изображения, обработка события mousedown или mouseclick для контейнера и, возможно, рисование красного квадрата вокруг него, чтобы показать, что он выбран. Самая «сложная» часть - это передискретизация изображения до 128x128, если они еще не такого размера, и даже это можно легко сделать с помощью GDI +.

1
ответ дан 26 November 2019 в 21:31
поделиться

Вы можете использовать FlowLayoutPanel и помещать в нее графические блоки. Установите для окна изображения размер 128x128, а для режима размера - «масштабирование» (это позволяет изменить размер изображения без потери соотношения сторон). Вы даже можете программно добавлять блоки изображений.

PictureBox pb = New Picturebox;
 pb.image = gcf.image128;
 FlowLayoutPanel1.Controls.Add(pb)

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

5
ответ дан 26 November 2019 в 21:31
поделиться

ObjectListView (an open source wrapper around a .NET ListView) makes it easy to custom draw a Tile view. Have a look at the Complex view on the demo, switch to Tile view when custom draw is enabled: owner drawn tile view
(source: sourceforge.net)

If you only wanted a 128x128 image plus some text details, you wouldn't even need to owner draw it. You could give it a large imagelist, and then mark which bits of textual information you wanted to show on the Tile, using IsTileViewColumn.

5
ответ дан 26 November 2019 в 21:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: