Предисловие
Библиотека картинок – это всегда удобно. За хранение отвечает всего одна переменная и для успеха надо всего-то организовать корректную работу с индексом. Это удобнее, чем возиться с кучей общих картинок или макетами двоичных данных. Но есть и минусы. Это, во-первых, размеры изображений и, во-вторых – редактор, навевающий печаль. Однако, после небольшого мозгового штурма оказывается, что в платформе достаточно средств, чтобы ее развеять.
Основная идея
Основная идея состоит в том, чтобы использовать один из видов коллекции для хранения библиотеки картинок. Для хранения одной картинки используется пара вида ключ – значение, где ключ может быть любого типа, а значение – это двоичные данные изображения. Идеально для этого подходят соответствие, таблица значений и список значений, но также можно применять структуру и массив для некоторых задач.
В этой статье мы будем использовать соответствие. В прилагаемой обработке приведен пример его формирования. Обработка ищет в указанной папке файлы с указанными расширениями. Затем каждый файл представляется в виде пары, где ключом выступает имя файла, а значением – его содержимой в виде двоичных данных. В других задачах в виде ключа может выступать перечисление, справочник. ПВХ и т.д. Чтобы было удобнее переносить соответствие в конфигурацию, оно сериализуется в XML и затем вручную копируется в текстовый макет. В примере он называется «БиблиотекаИзображенийЭлементов».
Также в обработке приведен пример использования этого способа. В целом, все просто. Надо получить текстовый макет и из него вытащить текст. Затем загнать этот текст в ЧтениеXML для десериализации, после чего можно пользоваться восстановленным соответствием.
В качестве примера я выбрал некоторое подобие часов. Для наглядности я реализовал решение как для ОФ, так и для УФ.
Где будет удобно использовать такой способ?
- Если требуется отобразить картинки различного размера, разрешения и т.д.;
- Если в прикладном решении удобно связать картинки с элементами справочника или ПВХ, перечислениями и т.п.;
- Если необходимо формировать библиотеку уже в режиме предприятия, ведь для хранения соответствия можно использовать строку неограниченной длины.
Тестировалось на платформах: 8.3.13.1926, 8.3.16.1030.