Построение графика функции, заданной в полярной системе координат.
Создайте в новом проекте форму «График функции в полярной системе координат»
1.Условие:
Построить график функции, заданной в полярной системе координат.
R=10*(1+cos(t)), где t € [0; 2π] шаг изменения t h=0.01
2.Программа:
Результат;
Сохранитепроект в папкеЛабораторная работа 11/Задание 3.
Задание 4
Построение графиков функций
Создайте в новом проекте форму «Построение графиков функций»
Создаваемое приложение должно состоять из таблицы для задания списка точек графика функции и графического поля для рисования графика. При этом любое изменение данных в таблице должно вызывать обновление графика.
Описание работы
Программа будет состоять из одной формы, на которой необходимо разместить:
Элемент | Caption | Name | Другие свойства |
Форма | Построение графика функции | ChartForm | |
Таблица для ввода координат точек | StringGrid | Options – qoEditing – True ColCount. RowCount – 3 | |
Панель для расположения диаграммы | отсутствует | PanelChart | |
Компонент TPaintBox для отображения графика функции | PaintBox | ||
Метка | График функции | Label1 | |
Метка | Исходные точки | Label2 | |
Панель для отображения ошибок ввода данных | отсутствует | PanelStatus | |
Кнопка | Выход | ButtonExit | Можно добавить свойство ModalResult - mrOk |
Таблица для ввода координат точек должна автоматически изменять размер в соответствии с количеством уже введенных точек функции. Как это сделать, описано в предыдущих лабораторных работах.
После ввода данных необходимо сформировать два массива введенных координат X и Y, отсортировать их по оси X, после чего необходимо перерисовать окно с графиком.
Замечание
При необходимости перерисовки компонента в ответ на какое-то событие, например, нажатие кнопки, сразу не рисуйте, а вызовите метод Invalidate и создайте обработчик события OnPaint визуального компонента, например, формы или TPaintBox.
Рассмотрим, как Windows отображает все свои окна.
Окнами в общем случае являются кнопки, строки ввода, списки и т.д. Они могут находиться друг в друге, например, кнопки в диалоговом окне или окна внутри многодокументного интерфейса. Каждое окно при этом имеет специальную главную управляющую процедуру, которая обрабатывает поступающие от системы сообщения. Некоторые из этих сообщений Delphi преобразует в события, которые можно затем обрабатывать в программе.
Windows сама никогда не хранит изображения окон, поэтому одним из сообщений является команда о необходимости отображения содержимого окна на экране.
В нашей программе сразу же после ввода координат точек мы не должны вызывать процедуру рисования. При этом мы должны указать Windows, что как только появится свободное процессорное время, система должна послать сообщение о необходимости реального отображения окна. При таком подходе, если окно приложения будет временно закрыто другим окном и опять станет видимым, система автоматически пошлет сообщение о необходимости восстановления графического изображения в окне.
В Delphi для указания, что необходимо перерисовать любой элемент управления, нужно вызвать его метод Invalidate.
Для изображения произвольной графики в Delphi обычно используется компонент TPaintBox, находящийся на закладке System палитры компонентов. Этот компонент имеет событие OnPaint, для которого мы и должны создать обработчик для рисования графика.
Для прорисовки произвольных изображения используется класс TCanvas(холст), а также методы, позволяющие рисовать графические примитивы (краткое описание свойств и методов объектов для рисования графики приведено выше).
Для упрощения алгоритма рисования графика будем считать, что обе координаты всех точек попадают в интервал
[-10, 10]'. Процедура рисования графика при этом распадается на две части:
- рисование осей координат с засечками и подписями
- и собственно изображение графика.
Теперь рассмотрим вопрос автоматического изменения положения и размеров визуальных компонентов при изменении формы. Для этого у компонентов имеются такие свойства, как Align и Anchors. Собственно, свойство Align является подмножеством возможностей свойства Anchors. Свойство Anchors имеет 4 логических подсвойства:
- akLefn,
- akTop,
- akRight,
- akBotton
Например, если свойство akRight установлено в True, то правая сторона элемента будет находиться на одинаковом расстоянии от правой стороны содержащей его формы при изменении пользователем ее размера, иначе правая сторона элемента будет находиться на одинаковом расстоянии от левой стороны. При изменении свойства Align на самом деле изменяется свойство Anchors, которое впоследствии и учитывается при изменении размеров.
Замечание
По возможности делайте любое окно растягиваемым, но при этом не забывайте отслеживать, чтобы внутренности окна изменялись при изменении его размеров. Для этого используйте свойства Аlign и Anchors.
Поэкспериментируйте приведенными свойствами и добейтесь, чтобы в нашем приложении график растягивался в размерах при увеличении размеров формы, но в то же время таблица оставалась с правой стороны формы, a кнопка выхода в правом нижнем.Обратите внимание, что процедура рисования графика должна учитывать изменяющийся размер элемента TPaintBox.
Программа:
Результат
На рис. приведен внешний вид запущенного приложения после того, как окно растянуто.
Сохранитепроект в папкеЛабораторная работа 11/Задание 4.
Вопросы и задания для самостоятельной работы
1. Как Windows перерисовывает свои окна?
2. Как заставить Windows перерисовать какое-то окно?
3. Для чего используются свойства визуальных компонентов Align и Anchors?
4. Поместите на форму компоненты для выбора стиля изображения на графике введенных точек (кружочки, квадратики или «не изображать»), толщины и цвета линий. При этом график должен автоматически перерисовываться при изменении этих параметров.
5. Добавьте кнопку для генерации случайного набора точек.