C #: использование .ico-файла с несколькими изображениями - PullRequest
7 голосов
/ 09 июня 2009

Я пытаюсь установить изображения в TreeView на C # из файла .ico, содержащего две иконки: версию 32x32 и версию 16x16. Изображения устанавливаются, но .Net выбирает версию 32x32 и уменьшает ее (что выглядит ужасно) вместо выбора легкодоступного изображения 16x16.

Соответствующий код:

ilTree.Images.Add(Properties.Resources.group);
ilTree.Images.Add(Properties.Resources.single);
ilTree.Images.Add(Properties.Resources.db);
treeStored.ImageList = ilTree;

Куда я иду не так?


Ответ:

Есть две вещи, которые вы должны сделать, чтобы заставить это работать. Во-первых, как упомянуто ниже, вручную указать правильный размер списка изображений. Во-вторых, вам, вероятно, придется указать глубину цвета. MSDN утверждает, что:

В .NET Framework версии 1.1 или более поздней версии по умолчанию используется значение Depth8Bit.

... однако это не помешало ImageList удалять цвета из моего 8-битного значка. После тщательного изучения мои иконки (их было три) были: 4-битные, 4-битные, 8-битные. Две 4-битные иконки имеют общие палитры, однако у 8-битной была другая. Всего между иконками было 257 цветов. Несмотря на единственное небольшое переполнение, .Net сбил его до простого 20 цветов.

Ответы [ 2 ]

5 голосов
/ 09 июня 2009

Вам необходимо создать новый объект Icon. Существует перегрузка для конструктора, который принимает исходный объект Icon и размер. Я не знаю, будет ли новый объект Icon использовать тот же HIcon, но он будет отображаться правильно. Чтобы быть в безопасности, я бы порекомендовал убедиться, что оба утилизированы.

1 голос
/ 09 июня 2009

Установите для свойства ImageSize ImageList новый размер (16, 16)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...