Напишем программу «Построение графика функции delphi», которая использует свойство Pixels для построения графика функции в delphi вида Y=2*sin(x)*exp(x/5). Для построения графика функции delphi используется вся доступная область формы , и если во время работы программы пользователь изменит размер окна, то график функции будет построен заново с учётом реальных размеров окна.
Ниже прилагается исходный код приложения «Построение графика функции delphi»:
//Функция, график которой нужно построить
function f(x:real):real;
begin
f:= 2*sin(x)*exp(x/5);

//построение графика функции в delphi
procedure GrFunction;
var
x1,x2:real; // границы изменения аргумента функции
y1,y2:real; // границы изменения значения функции
x:real;// аргумент функции
y:real; // значения функции в точке х
dx:real; // приращение аргумента
i,b:integer; // левый нижний угол вывода графика
w,h:integer; // ширина и высота области вывода графика фукции в delphi
mx,my:real; //масштаб по оси X и Y
x0,y0: integer; // точка начала координат

begin

// область вывода графика
i:=10; //Х - координата левого верхнего угла
b:=Form1.ClientHeight-20; // Y - координата левого верхнего угла
h:=Form1.ClientHeight -40; //высота
w:=Form1.Width -40; //ширина
x1:=0; // нижняя граница диапазона аргумента
x2:=25; // верхняя граница диапазона аргумента
dx:=0.01;// шаг аргумента
// найдём max и min значения функции на отрезке[x1,x2]
y1:= f(x1);// min
y2:=f(x2); // max
x:=x1;
repeat
y:=f(x);
if y<y1 then y1:=y;
if y>y2 then y2:=y;
x:=x+dx;
until (x>=x2);
// вычисляем мастаб
my:=h/abs(y2-y1);//мастаб по оси Y
mx:=w/abs(x2-x1);// мастаб по оси X
x0:=1;
Y0:= b-abs(Round(y1*my));
with Form1.Canvas do
begin
// оси
MoveTo(i,h);LineTo(i,b-h);
MoveTo(x0,y0); LineTo(x0+w, y0);
TextOut(i+5,b-h,FloatToStrF( y2,ffGeneral,6,3));
TextOut(i+5,b,FloatToStrF( y1,ffGeneral,6,3));
// построение графика функции
x:=x1;
repeat
y:=f(x);
Pixels[x0+Round(x*mx),y0-Round(y*my)]:=clRed;
x:=x+dx;
until (x>= x2);
end;
end;

//изменился размер окна программы
procedure TForm1.FormPaint(Sender: TObject);
begin
GrFunction;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
//очистить форму
Form1.Canvas.FillRect(Rect(0,0,ClientWidth, ClientHeight));
// построение графика функции в delphi
GrFunction;
end;
end.


Основную работу выполняет процедура GrFunction, которая сначала вычисляет максимальное (y2) и минимальное (y1) значение функции на отрезке [x1,x2]. Затем, используя информацию о ширине и высоте области вывода графика функции в Delphi , вычисляется масштаб по осям X(mx) и Y(my).
Высота и ширина области построения графика функции в Delphi определяется размерами рабочей области , т.е. без учёта области заголовка и границ. После вычисления масштаба процедура вычисляет координату Y горизонтальной оси Y0 и строит координатные оси графика. Далее идёт построение графика(см. рис.).

 

 


Вызов процедуры GrFunction выполняют процедуры обработки событий TForm1.FormPaint и TForm1.FormResize. Процедура TForm1.FormPaint обеспечивает построение графика, вычерчивание после появления формы на экране при запуске приложения, а так же после появления формы во время работы программы, т. е. после перемещений и изменений размеров формы приложения обеспечивает построение графика функции Delphi заново.

Скачать исходник приложения построение графика функции Delphi

 

Добавить комментарий


Защитный код
Обновить