Я пытаюсь установить изображения в 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 цветов.