Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Как правильно сделать массив картинок?


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

Есть ли способы как-то иначе организовать библиотеку изображений?

Автор: VICTAR 21.1.2008, 18:56
Зачем массив? 
ImageList  smile 

Автор: bems 21.1.2008, 19:27
Цитата(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


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

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)