|
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
|
||||||||||||||||||||||||||
DLL, как контейнер изображений. [FAQ]05.08.2010, 18:05. Показов 70318. Ответов 0
Последнее время часто слышу от пользователей вопросы о том, как хранить изображения в DLL и в дальнейшем их использовать в своём приложении...
Подобные вопросы заставили меня написать эту статью, в которой я попытаюсь рассмотреть вопрос хранения изображений в DLL и их дальнейшее использование. Прежде всего необходимо представлять, когда же необходимо использовать подобные контейнеры. Представьте себе, что вы захотели создать приложение, содержащее много вкладок, каждая из которых должна обладать собственным фоном. Или же приложение, представляющее из себя тестовую систему, в которой вопросы содержат иллюстрированный материал. Можно попросту добавить все изображения непосредственно в основной исполняемый файл... И вот здесь и возникает проблема: представьте себе, каков объём будет у такого приложения?! Некоторые пытаются сохранить все изображения рядом с приложением, или в отдельной папке... данная методика работает, но предоставляет пользователю право изменять содержимое безо всякого труда. Используя Dynamic-Link Library нам открывается возможность сохранения всех используемых ресурсов в едином файле. Также, мы сами в состоянии определять когда необходимо использовать то, или иное изображение... Итак, первым делом, создадим основной проект. File -> New -> VCL Forms Application. На форму поместим компонент TImage (из вкладки Additional) и TButton (из Standart). Пока что работа с проектом завершена. Сохраним и запустим наш проект: Теперь приступим к созданию нашей библиотеки. File -> New -> Other -> C++ Builder Projects -> Dynamic-link Library Указываем тип: С++. Библиотека в данном случае нам нужна для хранения ресурсов, поэтому нам не нужна VCL (библиотека визуальных компонентов) и мы смело отказываемся от Use VCL: Таким образом, мы уменьшим размер нашей библитеки в среднем на 0.5 мб Библиотека создана. Теперь необходимо добавить ресурсы, которые в дальнейшем будем использовать. Часто возникают вопросы о том, как использовать формат PNG. Для примера я рассмотрю именно этот формат. Итак, берём нужные изображения и добавляем их в проект. Сделать это можно нажав Project -> Add to project ..., либо просто перетащив файлы на созданный проект библиотеки: После того, как мы добавили нужные ресурсы, можно посмотреть, какой идентификатор ресурса был присвоен каждому изображению (идентификатор ресурса необходим для дальнейшего обращения к файлам): В Project Manager выберем режим сборки Release, дважды кликнув по нему. Теперь необходимо указать главное приложение (наш созданный ранее проект). Для этого укажем путь к исполняемому файлу: Run -> Parameters -> Host Application: Сохраним наш проект и запустим его. Запустится наш основной проект и в папке Release появится библиотека (Проект я назвал CoreUI, поэтому библиотека будет иметь название CoreUI.dll). Вернёмся к нашему основному проекту. В Unit1.cpp добавим библиотеку для работы с PNG-обьектами: #include "PngImage.hpp" Перед конструктором создания обьекта Form1 добавим строку:
После этого обработаем событие OnClick в Button1:
Комментарии к коду
Создадим динамический объект класса TPngImage
Запускаем проект и любуемся результатом. Если у кого-то остались какие-то вопросы, скачать проект можно по адресу: http://msdn.at.ua/temp/ImgInDll/WorksDll.rar DLL возможно использовать не только как контейнер изображений. О способах использования и проецирования DLL вы можете прочитать в статье: Dynamic-Link Library: Теория + Практика. С уважением, Михаил.
47
|
||||||||||||||||||||||||||
| 05.08.2010, 18:05 | |
|
Ответы с готовыми решениями:
0
DLL, как контейнер изображений. Builder 6. DLL, как контейнер для изображений DLL как контейнер языковых файлов |
| 05.08.2010, 18:05 | |
|
Помогаю со студенческими работами здесь
1
Использование dll как контейнер для файлов в builder 6 Загрузка jpg изображений из dll DLL - контейнер текстовых файлов, как редактировать текст? Контейнер изображений Невизуальный контейнер для однотипных изображений Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|