Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конструирование программ.doc
Скачиваний:
12
Добавлен:
05.05.2019
Размер:
12.37 Mб
Скачать

5.3.4 Ввод массива. Компонент Memo

Используем компонент Memo (MassivMemo: TMemo;) для ввода значений элементов массива (A: array[0..N-1] of integer;).

На рисунках 5.13, 5.14 приведен код модуля AverageUnit, в котором использован компонент Memo для ввода массива и вычисления среднего арифметического его значений.

Рисунок 5.13 – Модуль AverageUnit

Рисунок 5.14 – Модуль AverageUnit (продолжение)

Результат выполнения приложения приведен на рисунке 5.15

Рисунок 5.14 – Компонент Memo и его использование для ввода значений элементов массива

5.4 Немного о графике

Программа может выводить графическую информацию на некоторый абстрактный холст. Холст состоит из отдельных точек – пикселов (pixel). Положение пикселя характеризуется координатами X, Y(рисунок 5.15). Координаты возрастают сверху вниз (Y) и слева направо (X).

Холсту соответствует свойство Canvas («поверхность», «холст для рисования») – объект класса TCanvas.

Методы класса TCanvas обеспечивают вывод графических примитивов: точек, линий, окружностей, прямоугольников и других. Свойства TCanvas позволяют задать характеристики выводимых графических примитивов (цвет, толщину и стиль линий; цвет и вид заполнения областей), а также характеристики шрифта при выводе текстовой информации.

5.4.1 Свойство Canvas. Построение графика функции

Для вычерчивания на холсте линий и контуров применяется свойство Реn (карандаш) – объект класса TPеn.

Для закрашивания областей холста, ограниченных контурами применяется свойство Brush (кисть) – объект класса TBrush.

Для вывода текста на поверхность графического объекта используется метод TextOut. Шрифт, который используется для вывода текста, определяется значением свойства Font соответствующего объекта Canvas.

Рисунок 5.15 – Форма, клиентская область и графические координаты

Пример. Построение графика функции на поверхности формы

На рисунке 5.15 показан интерфейс Пользователя: область построения графика и две кнопки управления (График – для вывода графика функции, Выход – для завершения работы).

Для построения графика необходимо пересчитывать значение функции в координаты холста. Размер холста можно получить, обратившись к свойствам формы ClientHeight и ClientWidth (высота и ширина клиентской области).

Клиентская область формы – это прямоугольная область, в которой отображается результат работы приложения, например, текст или графические изображения. Клиентской области соответствует свойство ClientRect:

На рисунках 5.16 – 5.18 показан текст модуля graphExample главной формы приложения для построения графика функции.

Рисунок 5.16 – Модуль graphExample

Собственно построение графика – это цикл, в котором вычисляется значение функции, преобразуется в координаты точки на холсте, а затем соединяется линией с предыдущей точкой.

Аргумент функции x меняется от xmin до xmax с шагом stepx. Продолжение цикла по условию x<=xmax кажется совершенно естественным. Однако из-за погрешности вычислений вещественных чисел может оказаться, что значение x не будет точно равно xmax, поэтому последняя точка будет потеряна. Чтобы избежать этой ситуации следует подсчитать количество точек n и организовать цикл с целочисленным показателем:

n:= Round((xmax - xmin)/stepx)-1;

While n>=0 do begin

. . .

Рисунок 5.17 – Модуль graphExample (продолжение)

Рисунок 5.18 – Модуль graphExample (окончание)

Результат работы приложения – график функции (рисунок 5.19)

Рисунок 5.19 – Результат работы приложения