2008-11-28 2 views
0

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

ответ

2

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

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

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

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

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

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

0

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

Смежные вопросы