Низкоуровневое программирование. Работа с изображениями.
Немного отступим от процесса вывода на экран и поговорим о том, как загружать изображения. Для начала, создайте в папке с проектом новый каталог и назовите его, например, Graph. Скопируйте в него графический файл формата png (в моем случае это image.png).
Теперь в окне "Проекты" ("Projects" в SunMESDK, если этого окна нет, откройте его через "Window" - "Projects") щелкните правой кнопкой мыши на строке "ресурсы" ("Resourse") вашего проекта и выбирете там "добавить папку" ("Add folder") и выберете созданную нами папку Graph. Теперь к элементам этой папки можно обращаться как к корню каталога.
Старайтесь создавать изображения с 8-ми битной глубиной цвета. Это значительно ускорит рисование в программе.
Теперь объявляем объект Image (Image img;), для этого в конструкторе класса Canva дописываем такие строки:
try {
img = Image.createImage("/image.png");
} catch (IOException ex) {
ex.printStackTrace();
}
Слэш перед именем файла обязателен. Что интересно, если его убрать, то на стандартном эмуляторе программа запускаться будет, но, скорее всего, не будет работать на реальном телефоне.
Имена файлов и папок регистрозависимы. image.png, Image.png, image.Png - это не одно и то же.
У метода Image есть еще один способ загрузки изображения:
Image createImage(Image image, int x, int y, int width, int height, int transform)
- image - объект класса Image
- x, y - координаты начала
- width, height - ширина и высота
- transform - трансформация изображения. Может принимать следущие значения:
- Sprite.TRANS_NONE - без трансформации
- Sprite.TRANS_ROT90, Sprite.TRANS_ROT180, Sprite.TRANS_ROT270 - поворачивает изображение по часовой стрелке на 90, 180 и 270 градусов соответственно
- Sprite.TRANS_MIRROR - зеркально отажает изображение
- Sprite.TRANS_MIRROR_ROT90, Sprite.TRANS_MIRROR_ROT180, Sprite.TRANS_MIRROR_ROT270 - зеркально отражает изображение и поворачивает.
|