Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как правильно сделать массив картинок? Чтобы не было утечки памяти. 
:(
    Опции темы
Alexzz
Дата 21.1.2008, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 9.4.2007
Где: Латвия

Репутация: 1
Всего: 1



Решил попробовать написать простенькую игру.
Пока думаю сделать массив из картинок var m: array [0..15] of tbitmap; и в нём сохранить 16 битмапов по 32х32 пикселя. Потом наносить эти битмапы на канвы пайнтбокса методом draw.
Но вот у меня возникают вопросы:
В какой момент под массив отводится место в памяти, сразу, или только после присвоения картинок? 
Не будет ли такой массив занимать слишком много места в памяти? 
Не нужно ли каким-то образом заранее задать размеры изображений?
Как метод Draw отрисовывает изображение, использует ли он DirectX или отрисовка будет медленной?

Есть ли способы как-то иначе организовать библиотеку изображений?
PM WWW ICQ MSN   Вверх
VICTAR
Дата 21.1.2008, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 10
Всего: 80



Зачем массив? 
ImageList  smile 
PM MAIL   Вверх
bems
Дата 21.1.2008, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



Цитата(Alexzz @  21.1.2008,  18:03 Найти цитируемый пост)
В какой момент под массив отводится место в памяти, сразу, или только после присвоения картинок? 
сразу отводится место под 16 ссылок (по 4 байта каждая) на битмапы. Создавать битмыпы нужно будет руками

Цитата(Alexzz @  21.1.2008,  18:03 Найти цитируемый пост)
Не будет ли такой массив занимать слишком много места в памяти? 
нет, не будет

Цитата(Alexzz @  21.1.2008,  18:03 Найти цитируемый пост)
Не нужно ли каким-то образом заранее задать размеры изображений?
а откуда попадает изображение в битмапы?

Цитата(Alexzz @  21.1.2008,  18:03 Найти цитируемый пост)
Как метод Draw отрисовывает изображение, использует ли он DirectX или отрисовка будет медленной?
не использует. Он работает на GDI. Но это не обязательно значит, что отрисовка будет медленной.

Цитата(Alexzz @  21.1.2008,  18:03 Найти цитируемый пост)
Есть ли способы как-то иначе организовать библиотеку изображений? 
дык
Цитата(VICTAR @  21.1.2008,  18:56 Найти цитируемый пост)
ImageList




--------------------
Обижено школьников: 8
PM MAIL   Вверх
Alexzz
Дата 24.1.2008, 03:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 9.4.2007
Где: Латвия

Репутация: 1
Всего: 1



Ну впринципе разобрался. 
Как оказалось, массив это всего лишь набор указателей. Почему я так решил? Потому что когда я создав изображение в некой переменной затем присваиваю его первому элементу массива, затем отрисовываю на канвах переменной новую картинку и отправляю её в другой элемент массива, то в итоге оба элемента мне отдают одну и ту-же картинку - последнюю что я отрисовал. Тогда мне пришлось каждый раз после отправки изображения в массив заново делать img:=Tbitmap.Create; задавать размер картинки и выполнять img.Canvas.Create.

Ладно, с этим всё понятно.
Возникнут ещё вопросы, спрошу.

PM WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0433 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.