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