Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Лістинг 4.5. Графік функції



unitgrfunc_;

Interface

Windows, Messages, SysUtils, Classes,

Graphics, Controls, Forms, Dialogs;

Type

TForm1 = class(TForm)

procedureFormPaint(Sender: TObject);

procedureFormResize(Sender: TObject);

private

{ Private declarations }

Public

{Public declarations }

end;

Var

Forml: TForml;

Implementation

{$R *.DFM}

// Функція, графік якої треба побудувати

Functionf(x:real):real;

Begin

f:=2*Sin(x)*exp(x/5) ;

end;

// будує графік функції

procedureGrOfFunc;

Var

x1,x2:real; // границі зміни аргументу функції

y1,y2:real; // границі зміни значення функції

х:real; // аргумент функції

у:real; // значення функції в крапці х

dx:real; // збільшення аргументу

l,b:integer; // лівий нижній кут області виводу графіка

w,h:integer; // ширина і висота області виводу графіка

mx,my:real; // масштаб по осях X і Y

х0,у0:integer; // точка — початок координат

Begin

// область виводу графіка

l:=10; // X — координата лівого верхнього кута

b:=Forml.ClientHeight-20;

//У — координата лівого верхнього кута

h:=Forml.ClientHeight-40; // висота

w:=Forml.Width-40; // ширина

x1:=0; // нижня границя діапазону аргументу

х2:=25; // верхня границя діапазону аргументу

dx:=0.01; // крок аргументу

// знайдемо максимальне і мінімальне значення

// функції на відрізку [x1,x2]

y1:=f(xl); // мінімум

y2:=f(xl); //максимум

x:=x1;

Repeat

У:= f (х);

if у < yl thenyl:=y;

if у > у2 theny2:=y;

х:=x+dx; until (x >= х2);

// обчислимо масштаб

my:=h/abs(y2-yl); // масштаб по осі Y

mx:=w/abs(x2-xl); // масштаб по осі X

х0:=1;

у0:=b-Abs(Round(y1*my)) ;

withform1.Canvas do

Begin

// осі

MoveTo(l,b);LineTo(l,b-h);

MoveTo(x0,y0);LineTo(x0+w,y0);

TextOut(l+5,b-h,FloatToStrF(y2,ffGeneral,6,4));

TextOut(l+5,b,FloatToStr(yl,ffGeneral,6,4));

// побудова графіка

x:=xl; repeat

y:=f(x);

Pixels[x0+Round(x*mx),y0-Round(y*my)]:=clRed;

x:=x+dx;

until(x >= x2);

end;

end;

procedureTForm1.FormPaint(Sender: TObject);

Begin

GrOfFunc; end;

// змінився розмір вікна програми

procedureTForm1.FormResize(Sender: TObject);

Begin

// очистити форму

forml.Canvas.FillRect(Rect(0,0,ClientWidth,

ClientHeight));

// побудувати графік

GrOfFunc;

end;

End.

Основну роботу виконує процедура GrOfFunc, що спочатку обчислює максимальне (у2) і мінімальне (yl) значення функції на відрізку [x1l,x2]. Потім, використовуючи інформацію про ширину (Forml.Clientwidth -40) і висоті (Form1.ClientHeight - 40) області виводу графіка, обчислює масштаб по осях X (мх) и Y(му).

Висота і ширина області виводу графіка визначається розмірами робочої (клієнтської) області форми, тобто без обліку області заголовка і границь. Після обчислення масштабу процедура обчислює координату в горизонтальної осі (у0) і вичерчує координатні осі графіка. Потім виконується безпосередня побудова графіка (мал. 4.10).

 

Рис. 4.10Графік, побудований процедурою GrOfFunc

 

Виклик процедури GrOfFunc виконують процедури обробки подій onPaint і onFormResize. Процедура TForm1. FormPaint забезпечує креслення графіка після появи форми на екрані в результаті запуску програми, а також після появи форми під час роботи програми, наприклад, у результаті чи видалення переміщення інших вікон, чи цілком частково перекривають вікно програми. Процедура TForm1.FormResize забезпечує креслення графіка після зміни розміру форми.

Приведена програма досить універсальна. Замінивши інструкції в тілі функції f (х), можна одержати графік іншої функції. Причому незалежно від виду функції її графік буде займати всю область, призначену для виводу .

Примітка

Розглянута програма працює коректно, якщо функція, графік якої треба побудувати, приймає як позитивні, так і негативні значення. Якщо функція у всьому діапазоні тільки позитивна чи тільки негативна, то в програму варто внести зміни.

 

Вивід ілюстрацій

 

Найбільше просто вивести ілюстрацію, що знаходиться у файлі з розширенням bmp, jpg чи ico, можна за допомогою компонента image, значок якого знаходиться на вкладці Additionalпалітри (мал. 4.11).

 

Рис. 4.11Значок компонента Image

 

У табл. 4.8 перераховані основні властивості компонента Image.

 

Таблиця 4.8Властивості компонента Image

   
Властивість Визначає
Picture Width, Height   AutoSize   Strech   Visible Ілюстрацію, що відображається в поле компонента Розмір компонента. Якщо розмір компонента менше розміру ілюстрації, і значення властивостей AutoSize і strech дорівнює False, то відображається частина ілюстрації Ознака автоматичної зміни розміру компонента відповідно до реального розміру ілюстрації Ознака автоматичного масштабування ілюстрації відповідно до реального розміру компонента. Щоб було виконано масштабування, значення властивості AutoSize повинне бути False Чи відображається компонент, і, відповідно, ілюстрація, на поверхні форми

Ілюстрацію, що буде виведена в поле компонента image, можна задати як під час розробки форми додатка, так і під час роботи програми.

Під час розробки форми ілюстрація задається установкою значення властивості picture шляхом вибору файлу ілюстрації в стандартному діалоговому вікні, що з'являється в результаті щиглика на командній кнопці Loadвікна Picture Editor(мал. 4.12). Щоб запустити Image Editor, потрібно у вікні Object Inspectorвибрати властивість Picture і клацнути на кнопці з трьома крапками.

Якщо розмір ілюстрації більше розміру компонента, то властивості strech потрібно привласнити значення True і установити значення властивостей Width і Height пропорційно реальним розмірам ілюстрації.

Щоб вивести ілюстрацію в поле компонента image під час роботи програми, потрібно застосувати метод LoadFromFile до властивості Picture, указавши як параметр ім'я файлу ілюстрації. Наприклад, інструкція

Form1.Image1.Picture.LoadFromFile('e:\temp\bart.bmp')

завантажує ілюстрацію з файлу bart.bmp і виводить її в поле висновку ілюстрації (imagel).

Метод LoadFromFile дозволяє відображати ілюстрації різних графічних форматів: BMP, WMF, JPEG (файли з розширенням jpg).

Наступна програма, її текст приведений у ліsстингу 4.6, використовує компонент image для перегляду ілюстрацій, що знаходяться в зазначеному користувачем каталозі. Діалогове вікно програми приведене на мал. 4.14.

 

 

Рис. 4.12Вікно Picture Editor

 

 

Рис. 4.14Слайд-проектор

 




©2015 studopedya.ru Все права принадлежат авторам размещенных материалов.