- •Введение
- •Лабораторная работа № 1 (2 часа)
- •Среда разработки Visual Basic 6
- •Запуск Visual Basic 6
- •Панель инструментов
- •Окно форм
- •Окно проекта
- •Инструментальная панель элементов
- •Окно свойств
- •Окно макета форм (компоновки формы)
- •Окно Конструктора форм
- •Окно программы vb
- •Разработка пользовательского интерфейса
- •Задание для самостоятельной работы
- •Лабораторная работа № 2 (4 часа)
- •Системы координат
- •Выбор стандартного масштаба
- •Свойства ScaleLeft, ScaleTop
- •Свойства ScaleWidth и ScaleHight
- •Метод Scale
- •Р ис. 14 Иллюстрация к Упражнению 3.
- •Графические элементы управления
- •Объект управления типа «линия»
- •Объект управления типа «фигура»
- •Графические методы
- •Свойства CurrentX и CurrentY
- •Рисование линий
- •Установка цвета
- •Использование относительных координат (параметр Step)
- •Рисование прямоугольников
- •Рисование окружностей
- •Стиль заполнения замкнутых фигур
- •Лабораторная работа № 3 (2 часа)
- •Рисование диаграмм
- •Рисование кривых
- •Задание для самостоятельной работы
Рисование кривых
Методы Line и Circle позволяют рисовать гистограммы и секторные диаграммы. А как нарисовать график сложной математической функции? Для рисования кривой необходим программный код, который рисует каждую ее точку. Разумеется, рисовать кривые не так просто, как рисовать линии, но средства VB позволяет решить и эту задачу.
В общем случае функция одного аргумента задается в виде F(x). Чтобы график функции целиком был виден на экране (или в окне определенного размера) необходимо, используя метод Scale, задать пользовательский масштаб, связанный с параметрами функции (диапазоном изменения аргумента и максимальным и минимальным значением функции).
Пусть аргумент функции x изменяется в диапазоне от Xmin до Xmax. Следовательно, по оси необходимо установить пользовательский режим задания координат в диапазоне от Xmin до Xmax.
Чтобы построить график функции, необходимо рассчитать ее значения при последовательных значениях x и отложить по оси ординат точки, соответствующие этим значениям, то есть, чтобы сформировать координатное пространство функции, необходимо рассчитать максимальное и минимальное значения функции в диапазоне изменения переменной x. Очевиден вопрос, сколько же точек по оси абсцисс необходимо включить в расчет. Чтобы график функции не имел разрывов, расчет значений функции необходимо вести для каждого пикселя, лежащего в диапазоне изменений x, т.е. нужно сопоставить каждый пиксель с соответствующими значениями переменной x.
Пусть число пикселей по оси абсцисс равно XPixels. Таким образом, чтобы решить задачу построения графика необходимо:
Определить Pixels.
Значение x, соответствующее каждому пикселю рассматриваемого диапазона.
Максимальное и минимальное значение функции.
Построить пользовательскую систему координат.
Для определения величины XPixels необходимо временно установить значение свойства ScaleMode =3(Pixels), с помощью свойства ScaleWidth определить разрешающую способность элемента по горизонтали, а затем установить пользовательскую систему координат, соответствующую графику.
Form1.ScaleMode=3
XPixels=Form1.ScaleWidth-1
Определить значения x, соответствующего каждому пикселю. Ниже приведен цикл сканирования пикселей по оси х и расчет значений х:
For i = 1 To XPixels
x = Xmin + (Xmax - Xmin) * i / XPixels
Next
Далее остается рассчитать значения функции для каждого значения переменной x. Значения отображаемой функции вычисляются следующим образом:
Function Fun(ByVal x As Double) As Double
Fun = Fn(x)
End Function
Этап вычисления размеров пользовательской системы координат, завершается построением цикла, в процессе которого вычисляются максимальное и минимальное значение отображаемой функции:
For i = 1 To XPixels
x = Xmin + (Xmax - Xmin) * i / XPixels
Y = Fun(x)
If Ymax < Y Then Ymax = Y
If Ymin > Y Then Ymin = Y
Next i
Чтобы установить систему координат конкретной функции, можно вызвать метод Scale с аргументами.
Form1.Scale (Xmin, YMin) – (Xmax, YMax)
Для построения графика функции модифицируем цикл нахождения значения x:
For i = 1 To XPixels
x = Xmin + (Xmax - Xmin) * i / XPixels
Pset (x, Fn(x))
Next
Этот цикл разбивает график на точки, количество которых соответствует числу пикселей на оси х и рассчитывает значение функции в каждой точке и устанавливает соответствующий пиксель. Можно к собственным функциям добавить различные средства, например, оси координат, оцифровку осей, легенды.
Теперь вы ознакомились со всеми важными частями программного кода, необходимого для построения графиков функций.
Упражнение 2.
Нарисовать график функции Y = exp(2/t) sin(4t) в интервале значений t от 1 до 10.
Создайте новый проект и присвойте ему имя «Построение графика».
Установите на форму графическое окно и две командные кнопки. В режиме конструирования форма будет иметь следующий вид (рис.23).
Щ
Рис. 23 Форма для рисования графика
елкните дважды по командной кнопке «Нарисовать график» и в программное окно введите следующий код:
Dim Y, t As Variant
Dim Xmin, Xmax, Ymin, Ymax As Variant
Dim i As Integer
Dim XPixels As Integer
'Диапазон изменения х
Xmin = 2
Xmax = 10
'Задание максимальных и минимальных констант
Ymax = -1E101
Ymin = 1E101
'Определение значение XPixels
XPixels = Picture1.ScaleWidth - 1
'Определение максимального и минимального значения функции
For i = 1 To XPixels
t = Xmin + (Xmax - Xmin) * i / XPixels
Y = Fun(t)
If Ymax < Y Then Ymax = Y
If Ymin > Y Then Ymin = Y
Next i
'Установка пользовательской системы координат
Picture1.Scale (Xmin, Ymin)-(Xmax, Ymax)
Picture1.ForeColor = RGB(255, 0, 0)
'Построение графика
For i = 1 To XPixels
t = Xmin + (Xmax - Xmin) * i / XPixels
Picture1.PSet (t, Fun(t))
‘Picture1.Line -(t, Fun(t))
Next
В проект добавьте процедуру определения функции:
Function Fun (ByVal x As Double) As Double
Fun = Exp(x / 2) * (Sin(4* x))
End Function
Щелкните дважды по кнопке «Выход» и в процедуру для данной кнопки запишите:
End
Сохраните проект.
Запустите приложение на исполнение. Нажмите кнопку «Нарисовать график». На экране появится изображение графика в графическом окне PictureBox. (рис.24). Недостатки кода проявляются в разрывах между соседними точками функции. Чтобы скрыть разрывы, можно заменить метод Pset, устанавливающий один пиксель, методом Line, рисующим сегмент линии между двумя соседними точками:
P
icture1.Line
– (t, Fun(t))
В нашем случае этот вариант кода отмечен знаком комментария (‘), поскольку исходный вариант дает приемлемый вид графика.
Закройте проект, нажав кнопку «Выход». Сохраните проект.
