Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы 1 Разработка программы на основе линейного алгоритма.doc
Скачиваний:
3
Добавлен:
30.04.2022
Размер:
311.81 Кб
Скачать

Практическое занятие № 12

ПОСТРОение графиков функций в среде Delphi

Цель занятия: приобрести практические навыки программного построения графиков функций различными способами.

Задание: создать программу построения графика функции с поясняющим текстом в соответствии с номером индивидуального задания. Графический инструментарий

Богатство изобразительных возможностей Windows связано с так называемым дескриптором контекста графического устройства DC (Device Context) и тремя входящими в него инструментами – шрифтом, пером и кистью. В Delphi созданы специализированные классы-надстройки, существенно упрощающие использование графических инструментов Windows: для контекста – класс TCanvas, для шрифта – TFont, для пера – ТРеn и для кисти – TBrush.

Связанные с этими классами объекты автоматически создаются для всех видимых элементов и становятся доступны программе через свойства Canvas, Font, Pen и Brush .

Пример выполнения задания Исходная функция: sin(X).

Программа предусматривает три варианта рисования графика:

1) Точками с помощью свойства Pixels (график в левой верхней части окна).

2) Линиями с использованием метода LineTo (график в нижней левой части окна).

3) С использованием компонента TChart (в правой части окна).

На рис. 6.1 представлено окно формы в начале конструирования. В форме размещены следующие компоненты:

Кнопка BitBtn1 со страницы Additional. Она вызывает построение графиков в окне. Для создания этой кнопки свойству Kind присвойте bkOK, а значению Caption -График.

Кнопка BitBtn2 со страницы Additional. Дублирует кнопку закрытия приложения Windows. Для создания этой кнопки свойству Kind присвойте bkClose а значению Caption – Закрыть

TChart1. Компонент построения графиков со страницы Additional.

Свойству Caption всех компонентов формы присвойте соответствующие значения рис. 1

Для подготовки TChart к работе используется встроенный редактор свойств этого компонента Editing Chart, вызываемый двойным щелчком по компоненту. В нем в закладке Series нужно нажатием кнопки Add добавить, по крайней мере, одну серию данных для построения графика. Остальные параметры компонента можно оставить без изменения. При этом возникает окно для выбора способа отображения графика, выберите Line.

Рис. 1 Расположение компонентов на форме программы

После выбора вида графика у компонента TChart в окне формы отображается примерный вид представления графика. По умолчанию в правой части компонента отображается легенда - столбик из вычисляемых значений функции. При желании легенду можно удалить. Для этого следует вновь вызвать редактор свойств TChart, на вкладке Legend которого выключить флаг Visible. Можно изменить свойство Titles TChart с TChart, например, на “График функции Sin(x)”. В окне инспектора объектов свойству AxisVisible компонента TChart присвойте False.

Рис. 2 Окно работающего приложения.

Листинг программы

unit Unit1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);

var

i, amp, x01, y01, x02, y02, imax, t : integer;

k, func : real;

begin

imax := 100; //число точек в периоде (2)

t := 3; //число периодов

k := 2*pi/imax;//коэффициент преобразования линейной шкалы в угловую

amp := 70; //амплитуда

x01 := 20; //начало координат верхнего (с Pixels) графика (x01,y01)

y01 := 20+amp;

x02 := 20; //начало координат нижнего (с LineTo) графика (x02,y02)

y02 := y01+2*amp+40;

//Рисуем график с Pixels

Canvas.Font.Color:=clBlue; // Изменяем цвет надписи

Canvas.TextOut(20,0,'График функции Sin(x) с Pixels');

Canvas.MoveTo(x01,y01); //Рисуем ось X

Canvas.LineTo(x01+imax*t,y01);

Canvas.MoveTo(x01,y01+amp); //Рисуем ось Y

Canvas.LineTo(x01,y01-amp);

for i:=0 to imax*t do //Рисуем график

begin

func := -amp*sin(k*i);

Canvas.Pixels[x01+i,y01+round(func)]:= clGreen;

end;

//Рисуем график с LineTo

Canvas.Font.Color := clBlue;

Canvas.TextOut(x02,y02-amp-20, 'График функции Sin(x) c LineTo');

Canvas.MoveTo(x02,y02); //Рисуем ось X

Canvas.LineTo(x02+imax*t,y02);

Canvas.MoveTo(x02,y02+amp); //Рисуем ось Y

Canvas.LineTo(x02,y02-amp);

for i:=0 to imax*t do //Рисуем график

begin

func := -amp*sin(k*i);

Canvas.Pen.Color := clGreen; // Изменяем цвет рисуемой линии

Canvas.LineTo(x02+i,y02+round(func));

end;

//Рисуем график в компонентеTChart

for i:=0 to imax*t do

Chart1.SeriesList[0].AddXY(i,amp*sin(k*i),'',clRed);

end; {TForm1.BitBtn1Click}

end.

Для всех вариантов заданий написать программу построения графика функции, изменяющейся на отрезке [0, 6], разными способами: с использованием свойства Pixels, метода LineTo, компонента TChart.