ГРАФІЧНІ ФУНКЦІЇ WINDOWS-ІНТЕРФЕЙСА (WinAPI) ЗАСОБАМИ BORLAND PASCAL 7.0 FOR WINDOWS ТА BORLAND DELPHI

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
О
Факультет:
КН
Кафедра:
Кафедра САПР

Інформація про роботу

Рік:
2010
Тип роботи:
Лабораторна робота
Предмет:
Інформаційні технології

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ Національний університет «Львівська політехніка» Інститут комп’ютерних наук та інформаційних технологій Кафедра САПР Звіт з виконання Лабораторна робота №3 на тему: ГРАФІЧНІ ФУНКЦІЇ WINDOWS-ІНТЕРФЕЙСА (WinAPI) ЗАСОБАМИ BORLAND PASCAL 7.0 FOR WINDOWS ТА BORLAND DELPHI з курсу: «Геометричне моделювання у конструюванні інженерних об’єктів і систем» Львів 2010 Мета роботи Ознайомлення та практичне освоєння технології й основ роботи з графічними можливостями Windows-інтерфейсу (WinAPI) операційного середовища Windows, що можуть викликати прикладними програмами. Вивчити основні графічні функції та процедури WinAPI (Win32API) засобами програмного середовища Borland Pascal 7.0 for Windows та візуального середовища програмування Borland Delphi, набути практичних навиків переходу з програмування графіки для операційної системи DOS до оволодіння принципами створення Windows-програм, розробки графічних процедур та програм WinAPI. Теоретичні відомості Налаштування параметрів середовища Borland Pascal for Windows. При розробці програми з використанням графічних процедур та функцій у середовищі Borland Pascal for Windows необхідно вказати шлях до директорії у якій знаходяться програмні модулі. Для цього необхідно зайти в головне меню середовища (клавішею F10 або вибрати команду меню чи підменю можна використовуючи маніпулятор типу «миша»; якщо миша відсутня, то треба активізувати клавіші ALT + перша літера команди меню, або клавіші, які вказані в конкретній команді підменю). Головне меню середовища складається з десяти підменю. Принципи організації програм для DOS і для Windows. DOS є однозадачною операційною системою. Програма, що виконується в середовищі DOS, керується потоком даних. Після ініціалізації (запуску програми) перша програмна процедура виробляє дані, і в залежності від їхнього змісту виробляється виконання наступної процедури, що знову генерує дані і так далі. При визначених даних виробляється де ініціалізація програми. Windows є багатозадачною операційною системою і по суті не може керуватися потоком даних. Після ініціалізації (запуску) програми керування одержує не яка-небудь робоча процедура цієї програми, а диспетчер подій. Подія в термінах Windows розуміється як факт здійснення елементарної дії, від якого може залежати хід виконання програми. Це, проміром, натискання клавіші, переміщення курсору миші, завершення визначеного часового інтервалу. Дії, виконувані диспетчером подій: а) одержання (фіксація) події; б) перевірка умови виходу з програми; в) вибір потрібної процедури обробки події (диспетчитування). Коли обрана процедура завершує роботу, керування знову повертається диспетчеру подій. При фіксації події, що завершує програму, диспетчер завершує свою роботу і передає керування процедурі деініціалізації. Перевагою такої схеми керування ходом програми є універсальність. При модернізації програм для введення нової реакції на подію, що вводиться в програму, потрібно лише додати процедуру обробки цієї події без порушення базового коду програми. Для цього всі події в Windows приводяться до стандартного виду визначеної структури (повідомленню). Widows API: Склад і найменування. Терміном API (Application Programming Interface) називають інтерфейс прикладної програми Windows. Це повний набір процедур і функцій операційного середовища Windows, що можуть викликатися прикладними програмами під час їхньої роботи. У Borland Pascal ці процедури і функції представлені в TPW-модулях. Найбільше використовується з них модулів модуль Win Types (визначення констант і типів даних) та Win Procs (стандартні процедури і функції Windows). Windows API включає близько 1000 функцій, і для полегшення орієнтування в них прийнято дотримувати так званої угорської нотації – угоди про принципи іменування функцій, змінних і констант у Windows. Процедури і функції іменуються в стилі «дієслово-іменник», наприклад GreateWindow, SendMessage, TextOut (на відміну від OutText у Dos). Об’єкти і дескриптори. Windows-програми засновані на об’єктній технології – вікна, меню, піктограми, блоки діалогу, таймер, інструменти для малювання та інші елементи створюються і керуються як об’єкти. Сама програма розглядається середовищем Windows також як об’єкт. Об’єктів досить багато, і для їхнього однозначного визначення існують дескриптори (чи посилання – термін «Handle»). Дескриптор можна розглядати як індекс об’єкта в системному списку об’єктів Windows. Він визначений як 16-бітне слово в модулі WinTypes (Type Handle-Word). Подібна адресація об’єктів знімає обмеження й умовності при взаємодії з апаратним забезпеченням і не вимагає зміни коду програм при удосконалюванні самої Windows. Лабораторне завдання Ознайомитись з графічними функціями WinAPI. Створити алгоритм розв’язку індивідуального завдання. Скласти програму на мові Pascal з використанням функцій WinAPI, набрати у текстовому редакторі інтегрованого середовища Borland Pascal for Windows чи Borland Delphi. Записати створену програму на диск. Запустити на виконання програму. Отримати результати виконання програми згідно індивідуального завдання. Здійснити аналіз результатів та сформувати висновки по роботі. Оформити результати по роботі. Індивідуальне завдання Варіант №28 Написати програму із застосуванням графічних функцій WinAPI, яка дозволяє візуалізувати графік(и) функції з можливостями масштабування у вікні на певному інтервалі. Застосувати функції зміни кольору, штриховки, зафарбування замкнутих областей, текстових підписів, виводу координатної сітки. Організувати вивід графіки у зовнішній метафайл. Побудувати в одній області екрана графіки функцій  і.  Текст програми unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ComCtrls, Buttons; type TForm1 = class(TForm) Image1: TImage; RadioButton2: TRadioButton; RadioButton3: TRadioButton; BitBtn1: TBitBtn; BitBtn2: TBitBtn; ComboBox1: TComboBox; ComboBox2: TComboBox; Label6: TLabel; ComboBox3: TComboBox; TrackBar1: TTrackBar; Label2: TLabel; Label1: TLabel; procedure BitBtn2Click(Sender: TObject); procedure FormActivate(Sender: TObject); procedure TrackBar1Change(Sender: TObject); procedure BitBtn1Click(Sender: TObject) procedure ComboBox1Change(Sender: TObject); procedure ComboBox2Change(Sender: TObject); procedure ComboBox3Change(Sender: TObject); private public end; {----------------Опис змінних---------------------} var Form1: TForm1; k,f,x,y,rx,ry,kd,fd:integer; colGr1,colGr2,colAx:TColor; implementation {-----------Процедура малювання фону------} Procedure FonDraw; Begin Form1.Image1.Canvas.FillRect(Rect(0,0,Form1.Image1.Width,Form1.Image1.Height)); End; {---------------------------------------------} Procedure DrawAxes; Begin k:=Form1.TrackBar1.Position; Form1.Image1.Canvas.Pen.Color:=colAx; Form1.Image1.Canvas.MoveTo(0,Trunc(Form1.Image1.Height/2)); Form1.Image1.Canvas.LineTo(Form1.Image1.Width,Trunc(Form1.Image1.Height/2)); Form1.Image1.Canvas.MoveTo(Trunc(Form1.Image1.Width/2),0); Form1.Image1.Canvas.LineTo(Trunc(Form1.Image1.Width/2),Form1.Image1.Height); Form1.Image1.Canvas.Pen.Color:=clSilver; x:=Trunc(Form1.Image1.Width/2); while x<Form1.Image1.Width do begin x:=x+k; Form1.Image1.Canvas.MoveTo(x,0); Form1.Image1.Canvas.LineTo(x,Form1.Image1.Height); end; x:=Trunc(Form1.Image1.Width/2); while x>0 do begin x:=x-k; Form1.Image1.Canvas.MoveTo(x,0); Form1.Image1.Canvas.LineTo(x,Form1.Image1.Height); end; y:=Trunc(Form1.Image1.Height/2); while y<Form1.Image1.Height do begin y:=y+k; Form1.Image1.Canvas.MoveTo(0,y); Form1.Image1.Canvas.LineTo(Form1.Image1.Width,y); end; y:=Trunc(Form1.Image1.Height/2); while y>0 do begin y:=y-k; Form1.Image1.Canvas.MoveTo(0,y); Form1.Image1.Canvas.LineTo(Form1.Image1.Width,y); end; End; {--------------------Перша функція---------------} Function fy1(fx:integer):real; Begin fy1:=sqrt(sqr(fx)+2)*sin(fx) End; {----------------------Друга функція--------------} Function fy2(fx:integer):real; Begin fy2:=(fx+1)*sin(fx); End; {----------------------Малювання графіка-------} Procedure Grafic(pg:integer); Begin if pg=1 then begin FonDraw; DrawAxes end else if pg=2 then begin Form1.Image1.Canvas.Pen.Color:=colGr1; rx:=0; ry:=Trunc(fy1(rx)); x:=Trunc(Form1.Image1.Width/2)+k*rx; y:=Trunc(Form1.Image1.Height/2)-k*ry; Form1.Image1.Canvas.MoveTo(x,y); while x<Form1.Image1.Width do begin rx:=rx+1; ry:=Trunc(fy1(rx)); x:=Trunc(Form1.Image1.Width/2)+k*rx; y:=Trunc(Form1.Image1.Height/2)-k*ry; Form1.Image1.Canvas.LineTo(x,y); end; rx:=0; ry:=Trunc(fy1(rx)); x:=Trunc(Form1.Image1.Width/2)+k*rx; y:=Trunc(Form1.Image1.Height/2)-k*ry; Form1.Image1.Canvas.MoveTo(x,y); while x>0 do begin rx:=rx-1; ry:=Trunc(fy1(rx)); x:=Trunc(Form1.Image1.Width/2)+k*rx; y:=Trunc(Form1.Image1.Height/2)-k*ry; Form1.Image1.Canvas.LineTo(x,y); End end else if pg=3 then begin Form1.Image1.Canvas.Pen.Color:=colGr2; rx:=0; ry:=Trunc(fy2(rx)); x:=Trunc(Form1.Image1.Width/2)+k*rx; y:=Trunc(Form1.Image1.Height/2)-k*ry; Form1.Image1.Canvas.MoveTo(x,y); while x<Form1.Image1.Width do begin rx:=rx+1; ry:=Trunc(fy2(rx)); x:=Trunc(Form1.Image1.Width/2)+k*rx; y:=Trunc(Form1.Image1.Height/2)-k*ry; Form1.Image1.Canvas.LineTo(x,y); end; rx:=0; ry:=Trunc(fy2(rx)); x:=Trunc(Form1.Image1.Width/2)+k*rx; y:=Trunc(Form1.Image1.Height/2)-k*ry; Form1.Image1.Canvas.MoveTo(x,y); while x>0 do begin rx:=rx-1; ry:=Trunc(fy2(rx)); x:=Trunc(Form1.Image1.Width/2)+k*rx; y:=Trunc(Form1.Image1.Height/2)-k*ry; Form1.Image1.Canvas.LineTo(x,y); end end End; {-----------------------Вибір функції-------------} Procedure func; Begin if Form1.RadioButton2.Checked then f:=2 else if Form1.RadioButton3.Checked then f:=3; case f of 2:Grafic(2); 3:Grafic(3); end; End; {-------------------Кнопка очистки екрану--- } procedure TForm1.BitBtn2Click(Sender: TObject); begin FonDraw; DrawAxes end; {------------------------------------------------------} procedure TForm1.FormActivate(Sender: TObject); begin colGr1:=clBlue; colGr2:=clDefault; colAx:=clRed; FonDraw; DrawAxes; end; {--------------------Масштабування--------------} procedure TForm1.TrackBar1Change(Sender: TObject); begin FonDraw; DrawAxes; func end; {-------------Кнопка малювання графіка-----} procedure TForm1.BitBtn1Click(Sender: TObject); begin FonDraw; DrawAxes; func end; {---------Вибір кольору першого графіка-----} procedure TForm1.ComboBox1Change(Sender: TObject); begin if Form1.ComboBox1.Text='Red' then colGr1:=clRed else if Form1.ComboBox1.Text='Lime' then colGr1:=clLime else if Form1.ComboBox1.Text='Yellow' then colGr1:=clYellow else if Form1.ComboBox1.Text='Blue' then colGr1:=clBlue else if Form1.ComboBox1.Text='Fuchsia' then colGr1:=clFuchsia else if Form1.ComboBox1.Text='Aqua' then colGr1:=clAqua else if Form1.ComboBox1.Text='White' then colGr1:=clWhite else if Form1.ComboBox1.Text='Default' then colGr1:=clDefault; end; {---------Вибір кольору другого графіка-} procedure TForm1.ComboBox2Change(Sender: TObject); begin if Form1.ComboBox2.Text='Red' then colGr2:=clRed else if Form1.ComboBox2.Text='Lime' then colGr2:=clLime else if Form1.ComboBox2.Text='Yellow' then colGr2:=clYellow else if Form1.ComboBox2.Text='Blue' then colGr2:=clBlue else if Form1.ComboBox2.Text='Fuchsia' then colGr2:=clFuchsia else if Form1.ComboBox2.Text='Aqua' then colGr2:=clAqua else if Form1.ComboBox2.Text='White' then colGr2:=clWhite else if Form1.ComboBox2.Text='Default' then colGr2:=clDefault; end; {-----Вибір кольору координатних осей-----} procedure TForm1.ComboBox3Change(Sender: TObject); begin if Form1.ComboBox3.Text='Red' then colAx:=clRed else if Form1.ComboBox3.Text='Lime' then colAx:=clLime else if Form1.ComboBox3.Text='Yellow' then colAx:=clYellow else if Form1.ComboBox3.Text='Blue' then colAx:=clBlue else if Form1.ComboBox3.Text='Fuchsia' then colAx:=clFuchsia else if Form1.ComboBox3.Text='Aqua' then colAx:=clAqua else if Form1.ComboBox3.Text='White' then colAx:=clWhite else if Form1.ComboBox3.Text='Default' then colAx:=clDefault; end; end. Результати виконання програми  Рис. 1. Графік першої функції  Рис. 2. Графік другої функції Висновок На цій лабораторній роботі, я ознайомився з графічними можливостями мови Turbo Pascal версії 7.0. Вивчив графічні функції та процедури програмного середовища Turbo Pascal, набув практичних навиків розробки графічних процедур у середовищі Turbo Pascal в текстовому та графічному режимах. Написав програму на мові програмування Pascal, згідно індивідуального завдання. Переконався, що вона працює і виводить коректний результат. Привів у звіті результати виконання програми.
Антиботан аватар за замовчуванням

02.10.2020 20:10-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!