- •1. Специальные конструкции языка 6
- •Введение
- •Специальные конструкции языка
- •Пользовательские типы данных
- •Типизированные файлы
- •Текстовые файлы
- •Нетипизированные файлы
- •Обработка ошибок
- •Оператор On Error
- •Объект Err
- •Обработка событий мыши и клавиатуры
- •Обработка событий мыши
- •Обработка событий клавиатуры
- •1.5. Элемент управления MaskedEdit
- •Графика
- •Элементы управления для графических изображений
- •Генерация графических изображений (примитивов)
- •Графические методы
- •Координаты элементов управления.
- •Примеры использования графических методов
- •Задания для самостоятельной работы
- •Работа с таймером
- •Анимация графических изображений
- •Основные свойства и методы
- •Примеры создания эффектов анимации
- •Варианты заданий по анимации для самостоятельной работы
- •Стандартные диалоговые окна
- •Работа с базами данных в vb
- •Элемент управления Data
- •Объект Recordset
- •Элемент управления msFlexGrid
- •Элемент управления ms Data Bound Grid
- •Использование языка sql в vb для работы с базами данных
- •Литература
Координаты элементов управления.
При построении графического изображения необходимо задать пользовательские координаты формы или объекта. По умолчанию начало координат (0,0) элемента управления находится в верхнем левом углу соответственно формы, элемента. Значение по X увеличивается вправо, значение по Y - вниз.
Для задания стандартной системы координат с точкой (0,0) в середине элемента свойству ScaleTop присваивается некоторое положительное значение, а свойству ScaleHeight отрицательное значение, которые определяют диапазон значений шкалы Y. Например, при ScaleTop = 50 и ScaleHeight = -100, шкала Y имеет диапазон изменений от -50 до +50.
Аналогично свойству ScaleLeft присваивается некоторое отрицательное значение, а свойству ScaleWidth положительное значение, которые определяют диапазон значений шкалы X. Например, при ScaleLeft = -20, ScaleWidth = 40, шкала X имеет диапазон изменений от -20 до +20. Заданная таким образом система координат приведена на рисунке 2.2.
Рис. 2.2 Координаты формы
Для программной установки системы координат служит метод Scale (X1, Y1) – (X2, Y2), где в скобках заданы соответственно координаты Х1 и У1 верхнего левого угла и координаты Х2 и У2 правого нижнего угла формы или элемента. Оператор Form1.Scale (-10,10)-(10,-10) устанавливает систему координат с центром в середине формы и с координатами вершин (-10,10), (-10,-10) (10,-10) и (10,10). Пример такой системы координат приведен на рис.2.3.
Свойства CurrentX и CurrentY формы или элементов PictureBox, Image определяют текущие координаты точки на них.
Метод Cls осуществляет очистку поля формы или объектов PictureBox, Image.
Рис. 2.3. Система координат с центром в середине формы
Примеры использования графических методов
Пример 2.1. Следующий программный код по активизации формы устанавливает координатную сетку с центром в центре формы, на которой рисуются пять типов элементов: прямая, не закрашенный прямоугольник, закрашенный прямоугольник, окружность и точка. Перед изображением точки меняется свойство DrawWidth – толщина объекта. На рисунке 2.4 приведен результат выполнения программы.
Private Sub Form_Activate()
Scale (-10, 10)-(10, -10) 'установка масштаба
Line (-10, 0)-(10, 0) 'ось X
Line (0, -10)-(0, 10) 'ось Y
Line (-7.5, -9)-(7.5, -9) 'прямая линия
DrawWidth = 3 'установка ширины линии или размера точки
Line (-6, -5)-(-5.5, -9), RGB(0, 120, 0), B 'не
закрашенный прямоугольник, цвет линии - зеленый
Line (-4, -5)-(-3.5, -9), RGB(0, 120, 0), B 'не
закрашенный прямоугольник, цвет линии - зеленый
Line (-6.5, 2)-(-3, -5), vbBlue, BF 'закрашенный синим
цветом прямоугольник
Line (-8, -2.5)-(-6.5, 2), vbGreen 'прямая линия зеленого
цвета
Line (-3, 2)-(-1.5, -2.5), vbGreen 'прямая линия зеленого
цвета
Line (-5.25, 3)-(-4.25, 2), RGB(0, 120, 0), B
'окружность:
Circle (-4.75, 5.25), 1.75, RGB(200, 120, 0)
'окружность:
Circle (-5.45, 5.65), 0.3, RGB(60, 30, 120)
'окружность:
Circle (-4.05, 5.65), 0.3, RGB(60, 30, 120)
Circle (-4.75, 5), 0.3, RGB(200, 120, 0), , , 2 'овал
Circle (-4.75, 4), 0.5, RGB(250, 0, 0), , , 0.5 'овал
DrawWidth = 5 'изменение размера точки
PSet (-5.45, 5.65), QBColor(1) 'точка
PSet (-4.05, 5.65), QBColor(1) 'точка
E nd Sub
Рис. 2.4 Пример использования графических методов.
Примеры построения графиков функций. В следующих примерах графики функций строятся не на форме, а в элементах PictureBox или Image. Методы Line, Circle, Pset будут теперь относиться к элементам PictureBox и Image, и записываться, соответственно, следующим образом: Picture1.Line ()-(); Image1.Line ()-(). Система координат задается соответственно допустимым значениям изменения аргумента и функции.
Минимальные и максимальные значения на осях Х и Y проставляются с помощью меток (Label) на форме (свойствам Caption меток присваиваются соответствующие значения).
Пример 2.2. Рассмотрим пример программы построения графика функции
y = 2 * x + 3 на отрезке [-5,+4].
Заданный отрезок определяет масштаб оси Х.
Исходный текст программы приведен ниже (результат выполнения программы приведен на рис. 2.5).
Dim x1 As Single, x2 As Single ‘переменные, задающие отрезок
по оси ОХ
Dim s As Single ‘переменная, задающая шаг для построения графика
Dim a As Single, b As Single ‘переменные для задания системы
координат
Dim x As Single ‘переменная цикла
Private Sub Form_Activate() ‘процедура обработки события
«Активизация формы»
x1=-5
x2=4
s=1
’а присваивается max из |х1| и |х2|:
if Abs(x1)<Abs(x2) then a=Abs(x2) else a=Abs(x1)
b = FF(x1) ‘b присваивается значение функции в точке х1
For x = x1 To x2 Step s ‘цикл с шагом s
’b присваивается max значение функции у:
If Abs(FF(x)) > Abs(b) Then b = Abs(FF(x))
Next
Picture1.Cls ‘очистка элемента
Picture1.Scale (-a, b)-(a, -b) ‘задание масштаба элемента
управления
Picture1.Line (-a, 0)-(a, 0), RGB(0, 255, 0) ‘построение
оси ОХ, цвет зеленый
Picture1.Line (0, -b)-(0, b), RGB(0, 255, 0) ‘построение
оси ОY, цвет зеленый
‘помещение в поля меток значений областей изменений для осей координат
Label1.Caption = Str(-a)
Label2.Caption = Str(-b)
Label3.Caption = Str(a)
Label4.Caption = Str(b)
Picture1.CurrentX = x1 ‘координаты начальной точки графика
Picture1.CurrentY = FF(x1)
Picture1.DrawWidth = 6 ‘задание толщины точки
‘построение точки:
Picture1.PSet (Picture1.CurrentX, Picture1.CurrentY)
For x = x1+s To x2 Step s ‘цикл с шагом s
Picture1.DrawWidth = 3 ‘задание толщины линии
Picture1.Line -(x, FF(x)), RGB(255, 0, 0)
‘построение линии красного цвета от текущей точки
Picture1.DrawWidth = 6 ‘задание толщины точки
Picture1.PSet (Picture1.CurrentX,_
Picture1.CurrentY) ‘построение точки
Next
End Sub
‘Процедура-функция для вычисления значения функции
Public Function FF(x As Single) As Single
FF = 2 * x + 3
End Function
Рис. 2.5 Результат выполнения программы
Пример 2.3. Рассмотрим пример программы для построения графика функции:
y = 5 * x ^ 2 - 4 * x + 12
с проверкой входных данных на корректность ввода. Начальная и конечная точки отрезка, шаг и толщина линии задаются пользователем. В форме также присутствуют командные кнопки “Построить”, “Очистить” (скрыть график), “Завершить”, инициирующие соответствующие команды.
Исходный текст программы приведен ниже (на рис. 2.6 приведен результат ее выполнения).
Dim x1 As Single, x2 As Single
Dim s As Single, p1 As Integer ‘p1 – переменная для хранения
толщины линии
Dim a As Single, b As Single
Dim x As Single
Private Sub Command1_Click() ‘обработка события по нажатию
на кнопку «Построить»
If Not IsNumeric(Textx1.Text) Then ‘использование встроенной
функции для идентификации числовых данных
MsgBox "Х1 не число!", 48, "Ошибка во входных данных"
Textx1.SetFocus
Exit Sub
End If
x1 = CSng(Textx1.Text) ‘преобразование типов из строкового в
вещественный
If Not IsNumeric(Textx2.Text) Then
MsgBox "Х2 не число!", 48, "Ошибка во входных данных"
Textx2.SetFocus
Exit Sub
End If
x2 = CSng(Textx2.Text)
If Not IsNumeric(TextS.Text) Then
MsgBox "S не число!", 48, "Ошибка во входных данных"
TextS.SetFocus
Exit Sub
End If
s = CSng(TextS.Text)
If Not IsNumeric(TextP1.Text) Then
MsgBox "P1 не число!", 48, "Ошибка во входных данных"
TextP1.SetFocus
Exit Sub
End If
p1 = Val(TextP1.Text)
Picture1.Visible = True ‘отображение на форме элемента для
построения графика
if Abs(x1)<Abs(x2) then a=Abs(x2) else a=Abs(x1)
b = FF(x1)
For x = x1 To x2 Step s
If Abs(FF(x)) > Abs(b) Then
b = Abs(FF(x))
End If
Next
Label5.Caption = Str(b)
Label6.Caption = Str(a)
Label8.Caption = Str(-a)
Label7.Caption = Str(-b)
Picture1.Scale (-a, b)-(a, -b)
Picture1.Cls
Picture1.Line (-a, 0)-(a, 0), RGB(0, 255, 0)
Picture1.Line (0, -b)-(0, b), RGB(0, 255, 0)
Picture1.CurrentX = x1
Picture1.CurrentY = FF(x1)
Picture1.DrawWidth = 6
Picture1.PSet (Picture1.CurrentX, Picture1.CurrentY)
For x = x1+s To x2 Step s
Picture1.DrawWidth = p1
Picture1.Line -(x, FF(x)), RGB(255, 0, 0)
Picture1.DrawWidth = 6
Picture1.PSet (Picture1.CurrentX, Picture1.CurrentY)
Next
End Sub
Private Sub Command2_Click() ‘обработка события по нажатию на
кнопку «Очистить»
Picture1.Visible = False
End Sub
Public Function FF(x As Single) As Single
FF = 5 * x ^ 2 - 4 * x + 12
End Function
Private Sub Command3_Click() ‘обработка события по нажатию
на кнопку «Завершить»
End
End Sub
Рис. 2.6 Результат выполнения программы