А.Н.
Павлов. Высокоуровневые методы информатики и программирования
5.1. Построение
графиков функций
Для
создания экранных изображений графиков функций используются методы Scale
– масштаб, Line – линия и Pset – поместить точку
(дословно: поместить пятно Point Set).
Метод Scale применяется к объектам класса Экранная форма (Form) и Графическое окно (PictureBox). Эти объекты имеют
абсолютные координаты и выражаются (по умолчанию) в твиксах (один твикс равен
1/1440 логического дюйма). Логический дюйм это такое расстояние на экранной
форме, которое при ее печати на принтере будет равным 1 дюйму. Само собой,
трудно ориентироваться в таких единицах измерения, поэтому при установке
масштабов координатных осей, удобнее все вычислять в сантиметрах или
миллиметрах. Правила разметки координатных осей будут даны в следующем разделе,
в данном случае просто следует просмотреть пример использования перечисленных
выше методов для организации построения графика в окне приложения. На рисунке 5
показано окно проекта, в котором на переднем плане находится форма с названием
«Построение графика», на которой находятся: Графическое
окно с именем PF31, Окно
метка с именем LF31, две командные кнопки с названиями
«Построить график» и «Возврат», Окно
метка с записью «K=» и Текстовое
окно с именем TF31 для ввода значения коэффициента. Все перечисленные
элементы управления должны работать в определенной последовательности, после
того как к форме будет обращение из строки меню главной формы «График».
Следовательно, необходимо сначала запустить форму, а затем приступить к работе
с ней. В качестве учебного примера выбрана простейшая функция: Y = K * Sin (X), хотя можно выбрать и
более сложную функцию, но при этом надо не забывать об ограничениях, которые
следует закладывать при выборе масштаба чертежа. В предложенной модели,
поставлены задачи: разработать программу для вычерчивания заданной функции в
определенных пределах; вводить параметр К
для исследования ее поведения; проводить контроль введенного значения.
Результат запуска приложения с заданным коэффициентом К = 9, представлен на
рис. 36. Для выхода из заданного приложения следует нажать на кнопку «Возврат».
В том случае, когда необходимо провести сравнительный анализ, можно ввести
новое значение коэффициента и снова нажать на кнопку «Построить график».
Рис. 36. Окно с построенным графиком
В данном примере сначала
на экране появляется надпись в объекте Label, а затем этот объект
замещается рисунком (PictureBox), на котором строится
график. Что бы скрыть текст, в программе свойству Visible для окна с текстом
присваивается значение True, после чего появляется
всплывающее диалоговое окно с вопросом. Если не
вызывать такое окно, то на окне PictureBox ничего не появится, это
происходит потому, что уже невидимый текст заслоняет окно рисунка, и необходимо
провести какое-нибудь действие. Этим действием и является появление диалогового
окна. После закрытия диалогового окна PictureBox становится полностью
видимым.
Программные коды для
разработанного приложения представлены в следующем разделе с некоторыми
комментариями автора. Движение линии построения графика по заданной функции
осуществляется с помощью изменения координат точки, которая отображает в каждый
момент времени значения координат, выбранной функции. Следует напомнить, что
оси времени может и не существовать, поэтому никакой связи реального времени с
происходящим процессом не существует. Временной интервал в данной программе
имитируется шагом приращения координат функции, чем меньше приращение, тем
медленнее будет движение линии на экране. Это не всегда удобно, так как
скорость работы процессора компьютера влияет на скорость движения линии на
экране, что требует подбирать величину приращения, поэтому правила работы с таймером
были рассмотрены в предыдущем примере. Ниже приведен листинг с программными
кодами для рассматриваемого примера.
Листинг программных кодов для построения графика.
Dim
k As Variant
Private Sub
Form_Load()
F1.Hide
PF31.Visible = True
k = 0
End
Sub
Private
Sub CF31_Click()
k = TF31.Text
If
k = "" Then
y = MsgBox("Вы не ввели значение коэффициента
К", 16, "ВНИМАНИЕ !")
Else
LF31.Visible
= False
y =
MsgBox("Вы ввели К= " & k & " ОСТАВИТЬ ?", 1, "ПРОВЕРИТЬ")
If y = 1 Then
PF31.Scale (-35, 20)-(35, -20)
PF31.Line (-32, 0)-(32, 0), QBColor(13)
PF31.Line (0, -15)-(0, 15), QBColor(12)
For x = -30 To 30 Step 5
PF31.Line (x, -1)-(x, 1)
Next x
For y = -15 To 15 Step 5
PF31.Line (1, y)-(-1, y)
Next y
For z = -30 To 30 Step 0.001
PF31.DrawWidth = 3
PF31.PSet (z, k * Sin(z)), vbBlue
Next z
End If
End If
TF31.SetFocus
End
Sub
Private
Sub CF32_Click()
F3.Hide
Unload F3
F1.Show
End
Sub