Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЯВУ.doc
Скачиваний:
6
Добавлен:
12.11.2019
Размер:
1.51 Mб
Скачать

Задание для самостоятельной работы

  1. На основе существующий иерархии классов создайте класс кольцо.

  2. Создайте следующую иерархию классов: TLocation (размещение) – Tpoint (точка) – Tline (линия) – Tromb (ромб).

КОНТРОЛЬНЫЕ ВОПРОСЫ

  1. Дайте определение класса и объекта.

  2. Чем поля отличаются от свойств?

  3. Что такое конструктор и деструктор?

  4. Для каких целей используются виртуальные классы?

  5. Для каких целей используется перегрузка операторов?

Лабораторная работа №19. Графика в delphi. Компоненты shape и chart

ЦЕЛЬ РАБОТЫ: Освоение графических возможностей Delphi и работы с компонентами Shape и Chart.

П ОДГОТОВКА К РАБОТЕ: Изучить свойства и методы компонентов Chart и Shape.

УКАЗАНИЯ К ВЫПОЛНЕНИЮ РАБОТЫ

Компонент Shape (Страница Additional на панели компонентов) только условно может быть отнесен к средствам отображе­ния графической информации, поскольку просто представляет собой различные геометрические фигуры, соответствующим образом заштрихованные. Основное свойство этого компонента - Shape (форма), которое может принимать значения, приведенные в таблице 19.1.

Таблица 19.1 Значения компонента Shape

stRectangle

прямоугольник

stSquare

квадрат

stRouiidRect

прямоугольник со скругленными углами

stRoundSquare

квадрат со скруглен­ными углами

stEllipse

эллипс

stCircle

круг

Примеры данных форм показаны на рис.19.1.

Другое существенное свойство компонента - Brush (кисть). Это свойство яв­ляется объектом типа TBrush, имеющим ряд подсвойств, в частности: цвет (Brush.Color) и стиль (Brush.Style) заливки фигуры. Третье из специфических свойство компонента Shape - Pen (перо), определяющее стиль линий.

К омпонент Chart (Страница Additional на панели компонентов) позволяет строить раз­личные диаграммы и графики. Ком­понент Chart имеет множество свойств, методов, событий.

Компонент Chart является контейнером объектов Series - наследников клас­са TChartSeries. Каждый такой объект представляет серию данных, характеризующихся определенным стилем отображения: тем или иным графиком или диа­граммой. Каждый компонент Chart может включать несколько серий. При отображении графика каждая серия соответствует одной кривой на графике, при отображении диаграммы можно наложить друг на друга несколько различных серий.

Для одного компонента Chart можно задать несколько се­рий одинаковых данных с разным типом диаграммы. Делая в каждый мо­мент времени активной одну из них, можно предоставить пользователю выбор типа диаграммы.

Задание 1. Создайте форму, изображенную на рис.19.1. и добавьте фигуры: прямоугольник со скругленными краями, квадрат, квадрат со скругленными краями. Установите для созданных фигур различные значения свойств Brush и Pen.

Порядок выполнения:

Для получения формы, изображенной на рис.19.1 в событии OnCreate для формы Form1 запишите программный код:

procedure TForm1.FormCreate(Sender: TObject);

begin

Shape1.Brush.Color:=clCream;

Shape1.Brush.Style:=bsSolid;

Shape1.Pen.Style:=psSolid;

Shape1.Shape:=stCircle;

Shape2.Brush.Style:=bsBDiagonal;

Shape2.Pen.Style:=psDashDot;

Shape2.Shape:=stEllipse;

Shape3.Brush.Style:=bsBDiagonal; Shape3.Shape:=stRectangle;

end;

Задание 2. Создайте форму, изображенную на рис.19.2.

Порядок выполнения:

Для получения формы выполните следующие действия:

  1. Разместите два компонента Chart на форме и посмотрите открывшиеся в Инспекторе Объектов свойства. Рядом со многими свойствами располо­жены кнопки с многоточием, которые позволяют вызвать ту или иную страницу Редактора Диаграмм - многостраничного окна, позволяющего установить все свойства диаграмм. Вызов Редактора Диаграмм возможен также двойным щелч­ком на компоненте Chart или щелчком на нем правой кнопкой мыши и выбором команды Edit Chart во всплывшем меню.

  2. Сделайте двойной щелчок на левом компоненте Chart. При этом открывается окно Редактора Диаграмм (рис. 19.3), страница Chart, которая имеет несколько закладок.

Щелкните на кнопке Add (добавить серию) на закладке Series. Вы попадете в окно (рисунок 19.4), в котором мо­жно выбрать тип диаграммы или графика. В данном случае выберите Bar.

С помощью закладки Titles можно задать заголовок диаграммы, закладка Legend позволяет задать параметры отображения легенды диаграммы или убрать ее с экрана, закладка Panel определяет вид панели, на которой отображается диаграмма, закладка 3D дает возможность изменить внешний вид диаграммы: наклон, сдвиг, толщину и т.д. Страница Series, также имеющая ряд закладок, дает возможность выбрать дополнительные характеристики отображения серии.

  1. Выйдите из Редактора Диаграмм, выделите в приложении правый компонент Chart и повторите для него задание свойств с помощью Редактора Диа­грамм. В данном случае надо будет задать две серии, если хотите отображать на графике две кривые, и выбрать тип диаграммы Line. Поскольку речь идет о гра­фиках, то можно воспользоваться закладками Axis и Walls для задания координат­ных характеристик осей и трехмерных граней графика.

  2. Добавьте на компонент Chart еще одну тождест­венную серию, нажав на закладке Series страницы Chart кнопку Clone, а затем для этой новой серии нажать кнопку Change (изменить) и выбрать другой тип диаграм­мы.

На этом проектирование внешнего вида приложения завершается. Осталось написать код, задающий данные, которые вы хотите отображать. Для задания отображаемых значений надо использовать методы серий Series. Рассмотрим три основные метода.

- Метод Clear очищает серию от занесенных ранее данных.

- Метод Add: Add(Const AValue:Double; Const ALabel:String; AColor:TColor) позволяет добавить в диаграмму новую точку. Параметр AValue соответствует до­бавляемому значению, параметр ALabel - метка, которая будет отображаться на диаграмме и в легенде (необязательный параметр, его можно задать пустым: ‘’), AColor - цвет.

- Метод AddXY: AddXY(Const AXValue, AYValue: Double; Const ALabel: String; AColor: TColor) позволяет добавить новую точку в график функции. Параметры AXValue и AYVa­lue соответствуют аргументу и функции. Параметры ALabel и AColor те же, что и в методе Add.

Процедура, обеспечивающая загрузку данных, может иметь вид:

procedure TForm1.FormCreate(Sender: TObject);

const Al=155; A2=251; A3=203; A4=404;

var i:word;

begin

With Series1 do

begin

Clear;

Add(Al,'Цех 1',clYellow); Add(A2, 'Цех 2',clBlue);

Add(A3,'Цех 3',clRed); Add(A4, 'Цех 4',clPurple);

end;

Series2.Clear; Series3.Clear;

for i:=0 to 100 do

begin

Series2.AddXY(0.02*Pi*i,sin(0.02*Pi*i),'',clRed);

Series3.AddXY(0.02*Pi*i,cos(0.02*Pi*i),'',clBlue);

end;

end;

Эту процедуру можно включить в обработку щелчка какой-нибудь кнопки, в команду меню или просто в событие OnCreate формы. Операторы Clear нужны, если в процессе работы приложения вы собираетесь обновлять данные. Без этих операторов повторное выполнение методов Add и AddXY только добавит новые точки, не удалив прежние.

Откомпилируйте приложение и проверьте его работу

ЗАДАНИЕ 3: Построить эпициклоиду по заданному параметрическому представлению (см. рисунок 19.5), где x=(a+b) *cos(t) – a*cos((a+b)*t/a), y=(a+b) *sin( t) – a*sin((a+b)*t/a), a>0, b>0. Рассмотреть следующие случаи:

  • Если b/a есть целое положительное число, 0<t<2*π;

  • Если b/a=p/q, где p и q - положительные взаимно простые числа, 0< t <2*q*π.

ПОСЛЕДОВАТЕЛЬНОСТЬ ДЕЙСТВИЙ:

  1. Перенесите на форму требуемые компоненты;

  2. Добавьте для компонента Chart новую серию;

  3. Настройте компонент Chart, как показано на рисунках 19.6 и 19.7.

  1. Для события OnClick кнопки «Пуск» напишите следующий программный код:

procedure TForm1.BitBtn1Click(Sender: TObject);

var a,b,x,y,t,q:real;

begin

a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text);

t:=0; q:=2;

While t<2*q*pi do

begin

x:=(a+b)*cos(t) - a*cos((a+b)*t/a);

y:= (a+b)*sin( t) - a*sin((a+b)*t/a);

Series1.AddXY(x,y,'',clRed); t:=t+0.05;

end;

end;

  1. Проверьте работу приложения.

ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ

  1. Построить улитку Паскаля по заданному параметрическому представлению, где x=a*cos2(t) + b*cos(t), y=a*cos(t) *sin( t)+b*sin(t), a>0, b>0, 0<t<2*π. Рассмотреть следующие случаи:

    • b>2*a;

    • a<b<2*a;

    • a>b.

  2. Построить астроиду по заданному параметрическому представлению, где x=b*cos2(t) + b*cos(t), y=b *sin2( t), b>0, 0<t<2*π..