Оператор DrawText
Рисует строку текста text. Координаты (x, y) - координаты левого верхнего угла
прямоугольника, описывающего данный текст. Если текст шире, чем ширина экрана,
то эта его выступающая часть рисоваться не будет, иными словами функции переноса
теста на следующую строку нет. Операция проходит в буфере экрана.
|
procedure DrawText(text: string, xPos, yPos: integer);
|
Если вы программировали на Паскале, то вы уже писали программу Hello world!,
которая выглядела так:
program HelloWorld;
begin
Writeln('Hello world'); // Это не будет работать в MIDletPascal !!!
end.
|
Используемая в обычном Паскале процедура Writeln выводит текст
путем передачи символов
в стандартный поток вывода - на MS-DOS-экран. Однако в мобильном телефоне
нет понятия стандартного потока вывода. Отображение текста здесь больше
похоже на рисование, чем на передачу символов. Поэтому для отображения
текста на экране используется специальная процедура DrawText, которая имеет
три параметра: "выводимая строка", "x-координата", "y-координата". Координаты
указывают левый верхний угол прямоугольника, в котором будет размещаться
текст.
Все операции рисования происходят не на экране, а в экранном буфере памяти,
поэтому чтобы текст появился на экране, после DrawText следует
использовать оператор Repaint,
который перерисовывает содержимое буфера на видимый экран:
program HelloWorld;
begin
DrawText('Hello world', 0, 0);
Repaint;
end.
|
ВАЖНО! Операция repaint выполняется довольно медленно
и должна вызываться как можно реже. Например следующий код будет работать, но
относительно медленно:
program MyProject;
begin
drawText('Строка 1', 0, 0);
repaint;
drawText('Строка 2', 0, 10);
repaint;
drawText('Строка 3', 0, 20);
repaint;
delay(2000);
end.
|
Так делать не нужно, поскольку здесь происходит перерисовка экрана целых три раза, что довольно медленно. Правильней было бы сделать так:
program MyProject;
begin
drawText('Строка 1', 0, 0);
drawText('Строка 2', 0, 10);
drawText('Строка 3', 0, 20);
repaint;
delay(2000);
end.
|
Примеры использования оператора