Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 690

/ вопрос решён /

Здравствуйте, эксперты!
Тут вот какое дело . есть обычный обьект(image) а так же команда :
imageX.Picture.LoadFromFile('n');
где Х-неитересующее дело число, а N -путь.
впринципе все легко присвоить компаненту картинку из файла N.
Но сам вопрос следующий : есть ли способ из кучи картинок(файлов Nтипа) сделать один файл, с возможностью из него "вытаскивать" нужную картинку.

TeM Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: TeM (статус: Посетитель)
Вопрос отправлен: 14 июня 2008, 22:43
Состояние вопроса: решён, ответов: 2.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, TeM!
Как раз для этого дела существует компонент TImageList. Вначале нужно указать ему свойства Width и Height, которые укажут размеры "ячеек". Этот компонент может разбить и даже если картинки не лентой, а столбиком или несколько на несколько.
Следующим этапом будет загрузка.
ImageList1.FileLoad(rtIcon, путь, фоновый цвет);
Пусть не смущает слово rtIcon, и не пытайтесь туда запхать rtBitmap. В противном случае картинка будет грузиться в 16 цветном режиме - а это в наши планы не входит.
Теперь можно например нарисовать картинку на канве
ImageList1.Draw(Form3.Canvas,24,0,1);
Это значит нарисовать на третей форме, с координатами (24, 0) вторую картинку с списка. (помним, нумерация с нуля!).
Если нужно перенести на Image - поступаем аналогично - просто рисуем на нем, точнее на ImageX.Canvas. Ну и не забываем вначале указать размеры картинки для TImage.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 15 июня 2008, 01:02
Оценка за ответ: 5

Ответ #2. Отвечает эксперт: ANBsoft

Здравствуйте, TeM!
Если картинки делаются один раз и их список не меняется, то можно будет добавить их как ресурс в программу и загружать через LoadFromResourceName(HInstance,'N'). В отличие от варианта с TImageList каждая картинка может иметь свой размер. Если предполагается менять набор картинок, то нужно будет создать аналогичный файл контейнер и скомпилировать в него все картинки.
Если же это например иконки, имеющие одинаковый размер, то тогда наилучший вариант с TImageList.

Ответ отправил: ANBsoft (статус: Студент)
Время отправки: 15 июня 2008, 13:28
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 15 июня 2008, 22:00; участников в обсуждении: 2.
TeM

TeM (статус: Посетитель), 15 июня 2008, 21:53 [#1]:

Вот мне интересно - В задумке сделат один файл из который содержит 10-15 одинаковых картинок(по размерам) и из него подгружать нужные
что то вроде этого элимента: (Внешне напоминает имейдж лист )
form5.image7.Picture:=(jvImagesViewer1.Items[JvImagesViewer1.SelectedIndex].Picture);
Так вот -я прошу другое нежели мне ответили или я просто не понял правельно того что мне ответили?.
Вадим К

Вадим К (статус: Академик), 15 июня 2008, 22:00 [#2]:

TeM - внимательней присмотритесь к тому, что я неписал. это как раз то, что вы и хотите.
Галочка "подтверждения прочтения" - вселенское зло.

31 января 2011, 19:31: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:54
Выполнено за 0.04 сек.