Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Перечень основных компонент, необходимых для выполнения работы
TFORM, TLABEL, TEDIT, TSCROLLBAR, MessageDlg, MessageBox
Пример разработки приложения с минимальной функциональностью.
Ниже приведена программа, обладающая следующей функциональностью. Имеется меню, содержащее пункты – Моделирование и О программе Подпункты меню Моделирование позволяют построить ряд стандартных графических примитивов, нарисовать траекторию камня, брошенного под углом к горизонту. Диалоговое окно О программе реализовано как отдельный модуль (диалог) и (вследствие его простоты) в методичке не показано, но доступно на диске.
unit L2_4; Interface Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, ComCtrls, ExtCtrls; Const SizeN=50; dt=0.05; Type TForm1 = class(TForm) MainMenu1: TMainMenu; N1, N2, N3, N4, N5, N6, N7, N8: TMenuItem; Timer1: TTimer; Button1, Button2, Button3:: TButton; Image1, Image2, Image3: TImage; public procedure N8Click (Sender: TObject); procedure N6Click (Sender: TObject); procedure N2Click (Sender: TObject); procedure Button2Click (Sender: TObject); procedure N3Click (Sender: TObject); procedure Button3Click (Sender: TObject); procedure N4Click (Sender: TObject); procedure UpDown1Changing (Sender: TObject; var AllowChange: Boolean); procedure Timer1Timer (Sender: TObject); procedure Button1Click (Sender: TObject); end; {class} Var Form1: TForm1; PointsArray: array[1..SizeN] of TPoint; fi: real; vx, vy: real; xx, yy, SizeYY: integer; t: real; Implementation uses Unit2_4_2; {$R *.dfm}
{Обработка события «О программе»} procedure TForm1.N8Click (Sender: TObject); begin OKRightDlg.ShowModal; end; {Proc}
{Обработка события «пункт меню Выход»} procedure TForm1.N6Click (Sender: TObject); begin close; end; {Proc}
{Обработка события «Моделирование-прямые»} procedure TForm1.N2Click (Sender: TObject); var i: integer; sizeX, sizeY: integer; begin Image1.visible: =true; sizeX: =Image1.BoundsRect.Right-Image1.BoundsRect.Left; sizeY: =Image1.BoundsRect.Bottom – Image1.BoundsRect.Top; randomize; for i: =1 to SizeN do begin PointsArray[i].X: =random(sizeX); PointsArray[i].Y: =random(sizeY); end; Image1.Canvas.MoveTo(PointsArray[1].X, PointsArray[1].Y); for i: =2 to SizeN do begin Image1.Canvas.Lineto(PointsArray[i].X, PointsArray[i].Y); end; Button2.Visible: =true; end; {Proc}
{Обработка события «Закончить рисование линий»} procedure TForm1.Button2Click (Sender: TObject); begin Image1.visible: =false; Button2.Visible: =false; end; {Proc}
{Обработка события «Моделирование - эллипсы»} procedure TForm1.N3Click (Sender: TObject); var i: integer; sizeX, sizeY: integer; begin Image2.visible: =true; sizeX: =Image2.BoundsRect.Right-Image2.BoundsRect.Left; sizeY: =Image2.BoundsRect.Bottom-Image2.BoundsRect.Top; randomize; for i: =1 to SizeN do begin PointsArray[i].X: =random(sizeX); PointsArray[i].Y: =random(sizeY); end; for i: =1 to SizeN do begin Image2.Canvas. Ellipse(PointsArray[i].X, PointsArray[i].Y, PointsArray[i].Y, PointsArray[i].X); end; Button3.Visible: =true; end; {Proc}
{Обработка события «Закончить рисование эллипсов»} procedure TForm1.Button3Click (Sender: TObject); begin Image2.visible: =false; Button3.Visible: =false; end; {Proc}
{Обработка события пункт меню «Камень»} procedure TForm1.N4Click (Sender: TObject); var i: integer; sizeX, sizeY: integer; begin Image3.visible: =true; Button1.visible: =true;
sizeX: =Image3.BoundsRect.Right-Image3.BoundsRect.Left; sizeY: =Image3.BoundsRect.Bottom-Image3.BoundsRect.Top; sizeYY: =Image3.BoundsRect.Bottom – Image3.BoundsRect.Top;
vx: =round(50/1.4); vy: =round(50/1.4); fi: =arctan(vy/vx); xx: =0; yy: =sizeY; t: =0; Image3.Canvas.MoveTo(0, SizeY); Image3.Canvas.Lineto(0+round(50*Cos(fi)), SizeY-round(50*Sin(fi))); Image3.Canvas.MoveTo(0, SizeY); Image3.Canvas.Pen.Color: =clBlue; end; {Proc}
{Обработка события «Угол наклона»} procedure TForm1.UpDown1Changing (Sender: TObject; var AllowChange: Boolean); begin fi: =arctan(vy/vx); end; {Proc}
{Обработка события «Таймер»} procedure TForm1.Timer1Timer (Sender: TObject); begin t: =t+dt; xx: =round(xx+vx*dt); vy: =vy-10*dt; yy: =round(yy-vy*dt); Image3.Canvas.LineTo(xx, yy); if(yy> sizeYY) then begin Timer1.enabled: =false; button1.Caption: ='STOP'; end; end; {Proc}
procedure TForm1.Button1Click (Sender: TObject); begin if(button1.caption='START') then begin Timer1.Enabled: =true; end else begin button1.Caption: ='START'; button1.Visible: =false; Timer1.enabled: =false; Image3.Hide; end; end; {Proc} end{Unit}.
Примерный перечень заданий для выполнения студентами
Построить графики и численно найти нули следующих функций (координатные оси должны быть нарисованы и подписаны) 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Найти численное значение числа π, используя следующий алгоритм: строится круг единичного радиусас центром в начале координат, вокруг него описывается квадрат. В пределах построенного квадрата случайным образом ставятся точки. При этом , где N – общее число точек, m – число точек, попавших в круг, Skp – площадь круга, Skb – площадь квадрата. Изобразить решение графически.
Вопросы для самопроверки
1. Элемент управления UpDown для выбора угла бросания не работает, как его настроить? 2. Камень в примере летит «как то не так…», что надо сделать, чтобы действительно нарисовать параболу? 3. Почему затирается текст «Рисуем линии» при действиях с окном формы, а область Image - нет? 4. На каких еще видимых элементах можно рисовать? 5. Как правильно выводить на форму массивы точек, чтобы они не затирались при перерисовке окна? ЛАБОРАТОРНАЯ РАБОТА Л-2.5
ООП, классы, методы, наследование
Целью пятой лабораторной работы является освоение концепций наследования, полиморфизма и виртуальных правил на базе простых иерархий графических объектов. При этом используются процедуры работы с графикой стандартных классов системы Delphi, порожденных от TСontrol, осваивается материал, связанный со сложными (векторными свойствами) и обработка клавиатурных событий.
Материал Уч. Д1, необходимый для написания работы, – Популярное:
|
Последнее изменение этой страницы: 2016-03-17; Просмотров: 964; Нарушение авторского права страницы