Програмирование на Visual Basic
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
9;или размера точки
PSet (7, 6.5) точка
End Sub
Методы, осуществляющие вывод информации на форму, позволяют направлять ее непосредственно на принтер. Принтер (объект Printer) рассматривается как особая форма, размер которой -совпадает с размером печатаемой страницы. Метод Scale применим и для объекта Printer и позволяет установить нужную систему координат.
Рис 43 4.4. ПОСТРОЕНИЕ ГРАФИКОВ ФУНКЦИЙ
Использование пользовательской системы координат удобно при построении на экране графиков функций. В этом случае нет необходимости переводить и масштабировать значения аргументов и функций в единицы измерения координатных осей. Достаточно задать систему координат соответственно значениям аргументов и функций.
Для задания стандартной системы координат с точкой (0,0) в середине экрана свойству ScaleTop присваивается некоторое Положительное значение, а свойству ScaleHeight отрицательное значение, которые определяют диапазон значений шкалы Y. На-“ример, ScaleTop = 50, ScaleHeight = -100, шкала Y имеет диапазон от -50 до +50. Аналогично свойству ScaleLeft присваивается некоторое отрицательное значение, а свойству ScaleWidth положительное значение. Зти значения определяют диапазон значений шкалы X. Например, ScaleLeft = -20, ScaleWidth = 40, шкала \ имеет диапазон от -20 до +20 (рис. 4 4)
Построим график функции
у = -.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
Рис 44
Алгоритм построения графика поместим в процедуру обработки события 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
Построенный график показан на рис. 4.5. Процедуру 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 для распечатки растровой копии формы на принтере.
Рис 45
4.5. АНИМАЦИЯ ГРАФИЧЕСКИХ ИЗОБРАЖЕНИЙ
Если в последовательные моменты и изменять координаты графических объектов на экране, то объекты будут “перемешаться” по экрану. Для инициирования некоторых событий (в случае анимации изображений в моменты свершения этих событий необходимо изменять координаты графических объектов) через регулярные промежутки времени используется инструмент Таймер (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
После запуска приложения на форме последовательно рисуются окружности (рис. 4.6).
По такому же принципу можно строить более сложную анимацию (например, движение предметов на экране). В отличии от приведенной картинки движущейся окружности, при движе-чии предметов в каждый момент должно показываться только текущее положение предмета. В каждом конкретном случае это может достигаться комбинацией использования свойств FillColor, FillStyle и DrawMode. В частности, при значении свойства DrawMode, равном 6 (Invert), проведенная еще раз линия или другая фигура через те же координаты рисуется цветом инверсным к первой линии (если первая черная, то вторая белая т.е. при белом фоне экрана исходная линии исчезнет).
Подробно о значениях свойств и их действии при рисовании можно узнать из справочной системы Visual Basic.
Приведем пример программы, обеспечивающей показ движения парохода п