Проблемы с массивами картинок в Делфи
Создание игр на делфи довольно несложный процесс. Очень
часто при создании игр приходится создавать массивы картинок для хранения
графики. Потому, что графика для игр – это основа основ. Особенно в современных
играх. На данный момент все без исключения игры с графикой в наличии. Графика у
меня хранится в массивах типа Tbitmap. А
поскольку у меня не все картинки одинакового цвета, то в итоге столкнулся с
проблемой. Оказывается, один массив может хранить только картинки одного
размера, все картинки, которые по размеру больше – будут обрезаны.
Битмап в делфи был выбран как самый простой вариант
для работы с графикой. У него конечно же есть свои недостатки, но мой сайт
посвящен именно новичкам. Поэтому усложнять жизнь я им не собираюсь. Как
говорится в поговорке: «Все гениальное просто!». И дальше я как раз и расскажу
о некоторых слабостях битмап в делфи.
И какой же найти выход из данной ситуации? Вполне
возможно, что он есть, но я перебрав море информации из просторов Интернета,
ничего толкового не нашел. Сначала я пробовал при загрузке каждой картинки
указывать размеры для хранения в массиве, но, оказалось, что размер оказывался
прежним, то есть размером первой загруженной картинки. Тогда я попытался
сделать многомерный массив и в каждый уровень массива загружать разные размеры
картинок, но все тоже оказалось безрезультатно. Пробовал также не сразу
загружать картинки из файла в массив. А сначала загрузить в буфер а затем на
канве массива рисовать картинки, но как, Вы понимаете, безрезультатно.
Теперь хотелось бы поговорить о возможных выходах,
которые я нашел из данной ситуации. Первый выход – для каждого размера картинок
создавать отдельный массив. Это не всегда удобно, но зато если у нас есть набор
картинок одного, другого и третьего размеров, то мы создадим 3 разных массивов
для них. А вот если у нас куча картинок и все разного размера, то здесь этот
метод оказывается малодейственным. Так как неудобно для каждой картинки
создавать отдельный массив или переменную типа TBitmap.
Для вышеуказанной ситуации – когда есть море картинок
разного размера я вижу следующий выход. Мы создаем один массив, но первой
загружаем самую большую картинку, а за ней все остальные. Таким образом ни одна
картинка не будет обрезана и отображаться частично. Но многие картинки будут
занимать лишь верхний левый угол, а остальная часть картинки будет заполнена
белым цветом. Я рекомендую загружать такие картинки с прозрачным белым цветом
или любым другим. Тогда прорисовывая картинки в игре мы не увидим разницу.
Возможно найденные мною выходы не самые лучшие, но я
не смог отыскать в Интернете даже таких. Поэтому кому эти выходы помогут – я
буду рад, кому нет – ищите другие способы решения проблем с битмап в делфи. Графика
для игр очень важна поэтому нужно хорошо разбираться в этой области
программирования. В любом случае я всем желаю удачного создания игр и всего Вам
наилучшего. Благодаря нам с Вами создание игр на делфи может стать еще
популярнее и легче.
Источник: delgame.at.ua
|