GDI обрабатывает иконки. L - PullRequest
       13

GDI обрабатывает иконки. L

0 голосов
/ 28 ноября 2008

У меня есть приложение winforms. У меня есть пользовательский элемент управления с большим количеством значков. пользователь может загрузить этот элемент управления в форме много раз (в макете с вкладками). сейчас я загружаю иконки каждый раз, когда создается элемент управления (может быть до 50 раз в приложении). есть ли способ кешировать эти иконки в приложении. если бы я это сделал, это уменьшило бы количество используемых мной дескрипторов gdi, так как это становится проблемой.

Ответы [ 2 ]

2 голосов
/ 28 ноября 2008

Вы можете создать синглтон-класс для каждой иконки. Первая ссылка это создает дескриптор. Последующие вызовы используют существующий дескриптор.

Не зная больше о вашем пользовательском контроле, мое следующее предложение может быть только очень общим. Но у вас может быть один растровый слой, на котором вы рисуете все свои иконки. Остальные элементы вашего пользовательского элемента управления будут существовать над этим растровым изображением и вокруг него.

К сожалению, эта идея может быть проблематичной с точки зрения производительности. Требовать от вас рефакторинга кода, который вы все готовы использовать для размещения значков. Наконец, неинституционально, как идеально работает фреймворк со структурой формы управления.

Мы столкнулись с проблемой ресурса с формами ввода для параметрической формы, которую мы поставляем с нашим программным обеспечением CAM. Слишком много текстовых записей вызывали различные формы странностей и утечек. Таким образом, вместо этого мы создали метки с границами, которые выглядели как текстовые записи и имели ОДНУ текстовую запись (и запись комбинированного окна тоже). Когда пользователь вкладывает, вводит или щелкает отдельную текстовую запись, она перемещается в новую запись, и метка настраивается для предыдущей записи.

Это полностью неинтуитивная настройка, чем то, как вы обычно это делаете, но это был единственный способ справиться с нашей проблемой с ресурсами.

По моему опыту, у GUI Frameworks есть проблемы, когда вам приходится иметь дело с десятками или сотнями записей, и что вам нужно подходить к проблеме, используя другой дизайн.

0 голосов
/ 08 мая 2012

Если проблема заключается в количестве «значков» (не уверен, что вы имеете в виду здесь), вы можете использовать Image-Lists. Например, элемент управления Listview может ссылаться на значки в списке изображений вместо сохранения полной копии для каждого элемента (хотя и не уверен, применимо ли это к вашему случаю).

...