Мне не известно о каких-либо ограничениях по размеру изображений, которые может содержать TImageList
. Мне кажется, что ваша проблема в том, что у вас есть значки разных размеров, и вы не можете держать значки разных размеров в одном списке изображений.
Если вы работаете с иконками разных размеров, вам нужно будет увеличить меньшие по размеру. Вам придется создать его в коде, используя растровое изображение. Вы заполняете растровое изображение прозрачным альфа-каналом и затем перетаскиваете меньший значок в центр растрового изображения.
Другим вариантом может быть поддержание двух отдельных списков изображений, но если вам нужно нарисовать значки в одном и том же виде списка, то я думаю, что эта работа не будет выполнена. Я предполагаю, что вам нужно вырастить маленькие иконки.
Для альфы вам понадобится создать дескриптор списка изображений самостоятельно, так как свойство ColorDepth не существует в D7. Из-за этого ванильный D7 TImageList
просто не может поддерживать иконки с альфа-каналами.
Чтобы обойти это ограничение, вы должны позвонить ImageList_Create
, передать ILC_COLOR32
и присвоить результат ImageList.Handle
. Сделайте это, прежде чем добавлять какие-либо изображения. Вам придется заполнять список во время выполнения, а не во время разработки, но, похоже, вы уже это делаете.
Вот снимок экрана кнопки инструмента 48x48 со значком 32bpp с альфа-прозрачностью:
Это правда, что я сделал это в D2010, но мой вышеупомянутый обходной путь будет работать для D7 - я использовал этот механизм до недавнего времени с D6. Я просто показываю это, чтобы доказать, что список изображений может содержать иконки размером 48 пикселей. Поскольку TImageList
является просто оболочкой для компонента списка системных образов, я считаю, что то, что вы пытаетесь сделать, должно быть вполне осуществимым.