Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MS_VB_dop_vozm_5_04.doc
Скачиваний:
5
Добавлен:
19.11.2019
Размер:
1.64 Mб
Скачать
    1. Координаты элементов управления.

При построении графического изображения необходимо задать пользовательские координаты формы или объекта. По умолчанию начало координат (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. Система координат с центром в середине формы

    1. Примеры использования графических методов

Пример 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 Результат выполнения программы

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