Вывод картинки

(работа с ресурсами, понятие переменной)

Рассмотрим более сложную программу с выводом изображения на экран мобильного телефона. Это уже более интересно! Не так ли? Что ж, приступим к рассмотрению этой интересной программы. В этой программе идет загрузка изображения "image.png" для последующего вывода на экран мобильного телефона.

Но прежде давайте разберемся, как добавить в проект файлы рисунков, звуков, текстов и т.п., используемые программой. Такие файлы называются "файлы ресурсов".

Работа с файлами ресурсов

Слева от окна, в котором вы пишете текст программы (исходный текст), находится "инспектор" вашего проекта. В инспекторе есть две вкладки - "Файлы" и "Свойства". На вкладке "Файлы" находятся список файлов вашего проекта, а в "Свойствах" описана конфигурация создаваемой программы.

Выберем закладку "Файлы". В папке с проектом есть каталог под названием "Файлы ресурсов". Когда вы создаете новый проект, там находится только один файл "icon.png", в котором храниться картинка - иконка проекта.



Добавляем в ресурсы картинку

Давайте добавим к ресурсным файлам картинку, которую мы будем выводить:


image.png

Щелкните правой кнопкой мыши, по расположенной выше картинке image.png, выберите "Сохранить изображение" и укажите папку, в которую надо сохранить файл, например D:\png\.

ВАЖНО! MIDletPascal умеет "работать" только с изображениями в формате "png".

Теперь создадим новый проект. Назовем его, например: ImageProgram. Если забыли, как это делается, смотрите главу "Установка и настройка MIDletPascal". Затем добавим к ресурсам проекта файл image.png. Для этого выбираем в верхнем меню пункт "Проект", а затем - "Импорт файла":

Появится обычный диалог выбора файла. Выбираем нужный и нажимаем "Открыть":

Добавленный в проект файл должен появиться в списке файлов на вкладке "Файлы" слева (если вы закрыли вкладку, ее можно включить выбрав в меню "Вид" -> "Файлы"):

Если вам потребуется удалить файл ресурса, то выделите его в списке файлов ресурсов, щелкнув по нему мышкой, а затем выберите "Проект" -> "Удалить из проекта" (или просто нажмите сочетание клавиш Shift+Del).

Первый вариант программы вывода картинки

Простейшая программе для вывода картинки состоит из одной строки (не считая, конечно, присутствующих всегда program, begin и end):

program ImageProgram; 

begin 
 DrawImage(LoadImage('/image.png'),0,0);
end.

Означает это примерно следующее. LoadImage загружает картинку из ресурсного файла (символ "/" перед названием писать обязательно, иначе ничего не выйдет). DrawImage выводит загруженную картинку на экран в точку с координатами (0,0).

Однако, такой вариант вывода картинки годится лишь, когда изображение выводится в программе один раз. Когда необходимо много раз выводить одну и ту же картинку (например, в игре), то многократное считывание ее из ресурсного файла с помощью LoadImage существенно замедлит работу программы.

С точки зрения быстродействия программы, гораздо выгоднее предварительно загрузить картинку в оперативную память, откуда она будет выводиться гораздо быстрее, чем из ресурсного файла.

Переменные в языках программирования

Если картинка или другие данные хранятся в оперативной памяти, то для обращения к ним используются условные имена (их называют идентификаторами), которые указывают, с какими данными работает в данный момент программа. Область памяти, предназначенную для хранения каких-либо данных и обозначенную условным именем, принято называть переменной, а хранящиеся в ней данные - значением переменной. Значение переменной может меняться в ходе выполнения программы (то есть в эту область памяти могут быть записаны другие данные).

Для того, чтобы программа выделила соответствующее место в памяти для хранения переменных, их надо объявить до того, как будет написана первая команда (до первого begin).

Объявление переменных в MIDletPascal (как и в стандартном PASCAL) начинается со слова var (от англ. variable - переменная). Затем указываются имена переменных и типы данных, которые будут в них хранится. Между именем переменной и ее типом ставится двоеточие:

var
pic: Image;


В данном примере мы объявили переменную с именем pic, имеющую тип Image, предназначенный для хранения графических изображений.

ВАЖНО! Обратите внимание на точку с запятой в конце объявления переменной pic. Этот символ всегда ставится в конце конструкций языка PASCAL (MIDletPascal).

Имена переменных вы определяете сами, учтывая при этом следующие правила:

Операция записи в переменную ее значения называется присваиванием и обозначается сочетанием двух символов (двоеточие и равно): :=. Слева от обозначения операции присваивания указывается имя переменной, справа - присваиваемое (заносимое в переменную) значение. Поэтому, чтобы считать в переменную pic картинку из ресурсного файла img.png, в программе следует написать следующую строчку:

pic:= LoadImage('/image.png');

Чтобы использовать значение, хранящихся в переменной данных, следует указывать имя переменной. В нашем случае, мы должны передать процедуре DrawImage данные выводимой картинки. В предыдущем примере их напрямую возвращала функция LoadImage. Темеперь же эти данные занесены в переменную pic, поэтому мы указываем ее в качестве места нахождения картинки:

DrawImage(pic,0,0);

Теперь вывод изображения происходит из оперативной памяти, что гораздо быстрее, чем считывание из ресурсного файла.

Второй вариант программы вывода картинки

Используя то, о чем говорилось выше, получаем второй вариант программы вывода картинки на экран мобильного телефона:

program ImageProgram; 

var				// Раздел описания переменных
pic: Image;			// Описание переменной типа Image

begin 
 pic:= LoadImage('/image.png'); // Загружаем изображение "image.png" в переменную pic
 DrawImage(pic,0,0);		// Рисуем изображение на экране
				// (0,0) - координаты левого верхнего угла изображения
 repaint; 			// Обновляем ("перерисовываем") экран
 delay(2000);			// Ждем 2 секунды
end.				// Конец программы

Результат работы программы показан на следующем рисунке:





 
К содержанию

 
Скачать новую версию данного учебника в одном архиве

Курс находится в процессе разработки, поэтому архив постоянно обновляется!




 
Hosted by uCoz