Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VB-книга.DOC
Скачиваний:
2
Добавлен:
09.11.2019
Размер:
938.5 Кб
Скачать

4.3 Построение графиков функций

Использование пользовательской системы координат удобно при построении на экране графиков функций. В этом случае нет необходимости переводить и масштабировать значения аргументов и функций в единицы измерения координатных осей. Достаточно задать систему координат соответственно значениям аргументов и функций.

Для задания стандартной системы координат с точкой (0,0) в середине экрана свойству ScaleTop присваивается некоторое Положительное значение, а свойству ScaleHeight отрицательное значение, которые определяют диапазон значений шкалы Y. На-“ример, ScaleTop = 50, ScaleHeight = -100, шкала Y имеет диапазон от -50 до +50. Аналогично свойству ScaleLeft присваивается некоторое отрицательное значение, а свойству ScaleWidth положительное значение. Зти значения определяют диапазон значений шкалы X. Например, ScaleLeft = -20, ScaleWidth = 40, шкала \ имеет диапазон от -20 до +20

Построим график функции

у = -.25 * х л 3 + .14 * х л 2 + .25 * х - 25 на отрезке значений аргумента [-10,+10]. Анализ показывает, что область значении функции на этом отрезке: -270 < у < +270. Для вычисления значения функции зададим функцию Primer_Function:

Function Primer_Function(ByVal х As Single) у = -0.25 * х •”• 3 + 0.14 * х - 2 + 0.25 * х - 25

Debug.Print у Primer_Function = у End Function

Алгоритм построения графика поместим в процедуру обработки события Form_Click:

Private Sub Form_Ciick()

Scale (-10, 270)-(10, -270) 'установка масштаба CIs 'очистка экрана

DrawWidth = 1 'установка толщины линии Line (-10ft, 0)-(10#, 0) 'ось Х Line (0, -270ft)-(0, 270ft) 'ось Y CurrentX = -10# 'текущее значение Х CurrentY = Primer_Function(-10ft)

'текущее значение Y • For х = -10ft То 10ft Step 0.5

Line -(х,Primer_Function(х))'построение отрезков

‘графика Next End Sub

Процедуру Sub Foim_Click () можно преобразовать для печати графика на принтере'

Private Sub Form_Click()

Printer.Scale (-10, 270)-(10, -270) 'установка

'масштаба DrawWidth = 1 'установка толщины линии Printer.Line (-10<t, 0)-(10#, 0)'ось X Printer.Line (0, -270ft)-(0, 270ft) 'ось Y CurrentX = -10ft 'текущее значение X CurrentY = Primer_Function(-10ft) 'текущее

‘значение У

For x = -10ft To 10ft Step 0.5 Printer.Line -(x, Primer_Function(x))

'построение отрезков графика Next Printer.

EndDoc

End Sub

Кроме того, выведя графическую информацию на форму, можно использовать метод PlintFoirn для распечатки растровой копии формы на принтере.

4.4 Анимация графических изображений

Если в последовательные моменты и изменять координаты графических объектов на экране, то объекты будут “перемешаться” по экрану. Для инициирования некоторых событий (в случае анимации изображений в моменты свершения этих событий необходимо изменять координаты графических объектов) через регулярные промежутки времени используется инструмент Таймер (timer). Таймер программируют присвоением определенных значений свойству Interval, которое задает периодичность возникновения событий, связанных с таймером.

Значение свойства Interval задается в миллисекундах (мс) и может принимать значение О...65535 и теоретически способно заставить систему генерировать события со скоростью от 1000 раз

секунду до 1 раза в минуту. Интервал, равный 0 (по умолчанию), отключает таймер. Для того, чтобы события возникали п раз, задаваемое значение свойства Interval можно пассчитывать приблизительно по формуле 1000/п (событие генерируется 2 раза при значении свойства Interval равном 500). Однако необходимо учитывать, что технически для компьютера имеется порог чувствительности разрешения таймера (примерно 18 событий в секунду или 56 мс).

В качестве примера рассмотрим перемещение окружности по форме из нижнего левого угла в правый верхний. Это обеспечивается размещением на форме инструмента таймер, заданием значения свойства Interval отличного от 0 (при выполнении приложения таймер не виден на форме) и следующей программой, включающей описание переменной в разделе general формы, задание начального значения этой переменной в процедуре обработки события Forml_Load и процедуру Timerl_Timer :

Option Explicit Dim I As Integer

Private Sub Form_Load()

1=1 End Sub

Private Sub Timerl_Timer() Dim Dx, Dy As Single Beep 'подача звукового сигнала ' Dx = 5 'смещение по оси Х Dy •= 5 'смещение по оси Y Scale (0, 100)-(100, 0) 'оси координат

'(0,0)-в нижнем левом углу Circle (5 + Dx * (1-1), 5 + Dy * (1-1)), 5

'окружность

I = I+ 1 'переход к следующей точке End Sub

После запуска приложения на форме последовательно рисуются окружности.

По такому же принципу можно строить более сложную анимацию (например, движение предметов на экране). В отличии от приведенной картинки движущейся окружности, при движе-чии предметов в каждый момент должно показываться только текущее положение предмета. В каждом конкретном случае это может достигаться комбинацией использования свойств FillColor, FillStyle и DrawMode. В частности, при значении свойства DrawMode, равном 6 (Invert), проведенная еще раз линия или другая фигура через те же координаты рисуется цветом инверсным к первой линии (если первая черная, то вторая белая т.е. при белом фоне экрана исходная линии исчезнет).

Подробно о значениях свойств и их действии при рисовании можно узнать из справочной системы Visual Basic.

Приведем пример программы, обеспечивающей показ движения парохода по бурному морю.

В заключение следует отметить разницу в использовании графических элементов управления (Line, Shape), которые используются для улучшения внешнего вида экранных форм, и графических методов. С помощью графических методов графические объекты рисуются на этапе выполнения приложения, а графические элементы управления размещаются на этапе проектирования. Однако, если графические методы используются с

1елью улучшения внешнего вида форм, то они используют мень-пе системных ресурсов, поскольку приложение не хранит описание графических элементов управления. Вместе с тем, результат использования графических элементов управления виден уже на этапе проектирования

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]