Практическая работа №13, Лабораторная работа №13

Тема. Работа с графикой. Построение фигур и графиков.

Цель лабораторной работы: изучить возможности построения графиков с помощью компонента отображения графической информации TChart. Изучить возможности построения различных фигур.

 

 

Ответы на контрольные вопросы

1 Для каких целей используется двумерный массив Seriesk?

 

2 Назначение компонента NChart

 

3 Поясните назначение «канвы»

 

4 Как выглядит система координат канвы?

 

5 Поясните, как работает компонент ColorGrid

Часть 1. Как строится график с помощью компонента TChart

выполнения задания

Задание: составить программу, отображающую графики функций ___________ на интервале [Xmin..Xmax]. Предусмотреть возможность изменения разметки координатных осей, а также шага построения таблицы.

 

Настройка формы

Панель диалога программы организуется в виде, представленном на рисунке __. Для ввода исходных данных используются окна TEdit. Компонент TChart вводится в форму путем нажатия пиктограммы ,расположенной на закладке Additional палитры компонент.

В появившимся однострочном редакторе набрать имя отображаемой функции _________________________________________________).

Для изменения надписи над графиком на странице Titles в многострочном редакторе набрать: “Графики функций".

Для разметки осей выбрать страницу Axis и научиться устанавливать параметры настройки осей. ______________________________________________

Другие возможностями EditingChart _________________________________.

 

Написание процедуры обработки события создания формы

В данном месте программы устанавливаются начальные пределы и шаг разметки координатных осей. Когда свойство Chart1.BottomAxis Automatic имеет значение False, автоматическая установка параметров осей не работает.

 

Написание процедур обработки событий нажатия на кнопки

Процедура TForm1.Button1Click обрабатывает нажатие кнопки "Установить оси". Процедура TForm1.Button2Click обрабатывает нажатие кнопки "Построить график". Для добавления координат точек (X, Y) из таблицы значений в двумерный массив объекта Seriesk используется процедура

Series1.AddXY(Const AXValue, AYValue: Double; Const AXLabel: String; AColor: TColor): Longint,

где AXValue, AYValue - координаты точки по осям X и Y; AXLabel может принимать значение ‘’; AColor задает цвет линий (если равен clTeeColor, то принимается цвет, определенный при проектировании формы).

Текст программы:

 

 

Часть 2

Задание 1

1.. Запустите Delphi и сохраните новый проект в папке под названием «Графические примитивы».

2.. Установите на форму компоненты и настройте их свойства так, как показано на рисунке:

 

 
 

 


Рисунок 13.3 – Вид формы

 

3.. Создайте обработчик события нажатия кнопки onClick и внесите в него следующий код программы:

with PaintBox1.Canvas do //ссылаемся на канву PaintBox1

begin

Brush.Color:=clRed; //устанавливаем цвет заливки

Brush.Style:=bsFDiagonal; //устанавливаем стиль заливки

Pen.Color:=clBlue; //устанавливаем цвет границы

Pen.Width:=4; //устанавливаем толщину границы

Ellipse(10,10,100,100); //рисуем эллипс

end;

 

Рисунок

 

4.. Установите на панель вторую кнопку, назовите ее «Задание 1». Эта кнопка будет также рисовать эллипс, но другого цвета (цвет заливки синий, сплошная, цвет границы черный). Создайте обработчик события нажатия кнопки и внесите следующий фрагмент программы, вставляя вместо многоточий свой код:

with PaintBox1.Canvas do //ссылаемся на канву PaintBox1

begin

. . . . . . . . . //цвет заливки - синий

. . . . . . . . . //стиль заливки - сплошная

. . . . . . . . . // цвет границы - черный

. . . . . . . . . //толщина границы – 3 пикселя

Ellipse(10,10,100,100); //рисуем эллипс

end;

 

 

Рисунок

 

5. Установите на панель третью кнопку, назовите ее «Прямоугольник». Данная кнопка будет рисовать прямоугольник зеленого цвета. Внесите следующий код программы:

with PaintBox1.Canvas do //ссылаемся на канву PaintBox1

begin

Brush.Color:=clGreen; //устанавливаем цвет заливки

Brush.Style:=bsSolid; //устанавливаем стиль заливки

Rectangle(10,10,100,100); //рисуем прямоугольник

end;

 

Рисунок

 

 

6. Запустите программу на выполнение (F9) и, щелкая по кнопкам, проверьте их работу.

7. Обратите внимание, если вы нажмете кнопку «Окружность», после нажатия на кнопку «Прямоугольник», окружность нарисуется поверх прямоугольника. Чтобы устранить этот недостаток, добавьте вначале каждой процедуры следующие строки, которые также относятся к канве PaintBox1:

Brush.color:=clWhite;

Rectangle(0,0,PaintBox1.Width,PaintBox1.Height);

Button1

Panel1

PaintBox1 (на стр. System)

 

Рисунок

 

8. Запустите программу и проверьте правильность работы кнопок.

9. Установите на форму четвертую кнопку и назовите ее «Задание 2». В обработчик события нажатия кнопки внесите следующий фрагмент, вместо точек подставляя нужный код:

with PaintBox1.Canvas do //ссылаемся на канву PaintBox1

begin

Brush.color:=clWhite; //очищаем область рисования

Rectangle(0,0,PaintBox1.Width,PaintBox1.Height);

//установите цвет заливки – синим, стиль заливки – сплошная

. . . . . . . . . . . .

Rectangle(10,10,100,100); //рисуем прямоугольник

//установите толщину границы – 2, цвет заливки – красный

. . . . . . . . . . . .

Ellipse(100,10,200,100); //рисуем эллипс

end;

 

Рисунок

 

10. Установите на панель еще одну кнопку и составьте программу, выводящую на экран следующее изображение:

 

 


Программа

 

 

18. Запустите Delphi и сохраните новый проект в папке под названием «Практическая работа

19. Установите на форму кнопку и компонент PaintBox (стр. System). Кнопке дайте название «Центрические окружности».

20. Создайте обработчик события нажатия кнопки и внесите в него следующий фрагмент программы:

var i:integer;

begin

Randomize;

with PaintBox1.Canvas do //указываем холст, на котором рисуем

begin

for i:=15 downto 1 do //15 окружностей – цикл выполняется 15 раз

begin

Brush.Color:=random(color); //цвет очередной окружности случайный

ellipse(100-5*i,100-5*i,100+5*i,100+5*i); //рисуем окружность

end;

end;

 

Измените строчку программы

Brush.Color:=random(color);

на строчку

Brush.Color:=RGB(random(255),random(255),random(255));

Запустите программу на выполнение.

 

Рисунок

 

 

Замените теперь, строку

Brush.Color:=RGB(random(255),random(255),random(255));

на строку

Brush.Color:=RGB(random(255),0,0);

Запустите программу и посмотрите изменения.

 

Рисунок

 

21 Запустите Delphi и установите на форму кнопку и компонент PaintBox. В обработчике события нажатия кнопки внесите следующий код программы:

const r=15;

var x:real;y0:integer;

begin

y0:=100; x:=0;

with PaintBox1.Canvas do

begin

while x<PaintBox1.Width do begin

brush.Color:=clred;

Ellipse(round(x-r), y0-r, round(x+r),y0+r);

Pen.Color:=clBtnFace;

Ellipse(round(x-r), y0-r, round(x+r),y0+r);

x:=x+0.1;

end;

end; end;

 

Запустите программу на выполнения.

Задание 1: измените программу таким образом, чтобы окружность двигалась с меньшей скоростью (медленней).

Выводы