Низкоуровневое программирование. Работа с изображениями.
Немного отступим от процесса вывода на экран и поговорим о том, как загружать изображения. Для начала, создайте в папке с проектом новый каталог и назовите его, например, 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 - зеркально отражает изображение и поворачивает.
   
 |