Помимо простых фигур программно можно отображать на экране монитора сложные кривые, например, в виде графика функций. Рассмотрим очередной пример программы, осуществляющий именно такие операции. Создайте новое приложение и поместите на его форму пять компонентов кнопок Button и один компонент Image. Задайте свойство Caption для кнопок от первой до пятой, присваивающие им соответственно названия: Рисовать, +, —, Очистить и Функция. Размер пятой кнопки увеличьте по горизонтали примерно в два раза. Компонент Image растяните и разместите на оставшейся части формы. Свойство Caption формы заполните названием Function. Разместите все компоненты на форме в соответствии с рис. 23.3.
Рис. 23.3. Окно формы программы Function
Теперь сохраните модуль проекта в файле с названием Ufunction.cpp,
а сам проект в файле с названием Function.bpr.
Вставьте в файл описаний Ufunction.h
после строки public: // user declarations следующие
программные строки:
описывающие переменные номера функций и масштаба.
После оператора #inciude
"ufunction.h" в файле Ufunction.cpp впишите строку:
которая предназначена для подключения к проекту библиотеки
математических функций, что позволит нам использовать их в программе, в
том числе и тригонометрические функции.
Далее впишем в программу обработчики события OnClick
для всех кнопок. Начнем с четвертой кнопки, отвечающей за очистку
экрана. Для нее обработчик события OnClick должен
выглядеть в соответствии с листингом 23.7.
Листинг 23.7. Обработчик события OnClick
Программная строка обработчика содержит знакомый нам метод
FillRect.
Для обработчика события OnClick
кнопки рисования введем строки программного кода (листинг
23.8).
Листинг 23.8. Обработчик события OnClick кнопки рисования
Первая из этих строк описывает константу PI, принимающую значение числа Пифагора. Далее следует описание переменных Х, Y, PX и PY, служащих переменными функции и координатами точек рисунка. После этого следует вызов функции обработчика события OnClik кнопки очистки экрана, созданной нами ранее и предназначенной для очистки канвы компонента Image (то есть рисунка на экране). Далее вписана строка установки пера для рисования в левую среднюю точку экрана. После этой строки в программе присутствует оператор для организации цикла вычисления значения переменной y для множества значений точек РХ экрана от 0 до максимальной величины ширины экрана в пикселах. Переменная Х вычисляется в самом цикле. Одновременно масштабируется ее размер по вертикали экрана.
Оператор switch служит
для сравнения номера выбранной функции и вычисления для нее значения
переменной Y.
Функции могут быть произвольными. В дальнейшем при
необходимости можно будет изменять и расширять список этих функций. Далее
в программе вычисляется значение координат PY и рисуется фрагмент линии
функции.
В обработчик события OnClick кнопки + (плюс)
вставьте строки удвоения коэффициента функции и вызова обработчика
перерисовки графика функции, который принадлежит кнопке рисования
Button1:
В обработчик события OnClick кнопки — (минус) вставьте строки уменьшения вдвое коэффициента функции и тот же обработчик перерисовки графика функции:
Наконец, для кнопки выбора функции Button5 впишите обработчик события OnClick, состоящий из строк, приведенных в листинге 23.9.
Листинг 23.9. Обработчик события OnClick кнопки выбора функции
Здесь будет происходить автоматический инкремент номера функции и
присвоение ему начального значения при превышении максимального значения
п>3. В
зависимости от номера функции свойство Caption кнопки
Buttons будет менять свое значение на строку с записью
самой математической функции.
Для завершения программы необходимо
задать начальные значения для переменных масштаба и номера функции. Это
делается записью программных строк инициализации переменных m и п в теле функции
формирования формы. Здесь же необходимо вписать вызов обработчика события
OnClick для кнопки очистки экрана. В конечном виде
функция формирования формы должна иметь запись, соответствующую листингу
23.10.
Листинг 23.10. Функция формирования формы
Теперь запустите приложение и проверьте его работу. Результат работы программы при выводе на экран функции Y=m*x*sin(x*x) представлен на рис. 23.4.
Рис. 23.4. Результат работы программы
В этой программе мы использовали не только методы, но и некоторые
функции, например
sin(x) и cos(x). Среда разработки Borland C++Builder 6 имеет
огромное количество встроенных библиотек с готовыми к применению
функциями, что позволяет писать мощные и элегантные программы. Для
знакомства с функциями можно прибегнуть к встроенной справочной системе
среды разработки, вызвав ее нажатием клавиши <F1> или
<Ctrl>+<Fl>, когда курсор редактора находится на самой
функции. Аналогично можно поступать при знакомстве с другими методами, не
рассмотренными здесь.
Кроме того, среда разработки имеет встроенный суфлер кода, который
автоматически выводит на экран список доступных методов, свойств и функций
объектов при вводе символа "->", "."
или "(" после записи имени объекта.
Полезной является комбинация клавиш
<Ctrl>+<Space>, вызывающая список доступных функций и методов
для объекта, на котором расположен курсор редактора.
Комбинация клавиш
<Ctrl>+<J> открывает окно с перечнем функций-заготовок,
которые выбираются программистом с помощью стрелок курсора и вставляются в
программу после нажатия клавиши <Enter>.
Этими замечательными
инструментами среды разработки удобно пользоваться для вызова встроенной
справочной системы, ускорения ввода кода программы и исключения ошибок в
записи программных строк