Загрузка отдельной части большого изображения с помошью CopyRect
Загрузка отдельной части большого изображения с помошью CopyRect
При создании игры. ВОзникла необходимость загружать не всю часть изображения (картинки), а лишь малую частичку. В моем случае кадры анимации персонажа были обьединены в одну картинку. А программа должна была брать нужную часть анимации, с правильными координатами на картинке, и загружать в переменную типа TBitmap;
В Delphi присутсвует много вариантов как загрузить не все изображение, а лишь его часть, но у каждого метода свои особенности. Например я, варианты с OpenGL и DirectX откинул в сторону, так как не хочу использовать дополнительные библиотеки. Плюс мой сайт посвящен созданию игр именно новичками. А изучение данных библиотек довольно сложно для них.
Перебрав много вариантов я выбрал вариант с Canvas.CopyRect. Далее приводится пример реализации алгоритма, который загружает в переменную IMG1 все изображение с кадрами анимации, а затем в переменную IMG2, мы загружаем лишь необходимое нам с Вами.
Обратите внимание! В моем случае обязательно нужно было указать размеры для переменной IMG2. Без указания размеров изображение не выводилось на экран. Так что учтите это при создании своего алгоритма.
Теперь рассмотрим вариант, когда нам нужна первая картинка в первой строке. Картинки анимации были у меня размером 64х64.
Думаю данных примеров будет достаточно для того, чтобы разобраться с выбором правильных координат при загрузке нужной части большого изображения.
При выборе метода хранения большого количества картинок в одном большом изображении, в паке с игрой будет меньшее количество изображений в целом. А значит меньше путаницы как с самими изображениями в папках, так и с именами самих изображений.