- •Институт информационных систем управления
- •Кандидат экономических наук, доцент в.А. Машурцев
- •Введение.
- •Глава 1. Vb 6.0 – среда разработки приложений.
- •1.1. Окна среды vb.
- •1.2. Файловая структура проекта.
- •1.3. Визуальное конструирование приложения.
- •1.4. Основные свойства формы и задание их значений.
- •1.5. Добавление форм к проекту и удаление форм из проекта.
- •1.6. Основные элементы управления и их свойства.
- •1.6.1. Элемент Label.
- •1.6.2. Элемент TextBox. Элемент TextBox (текстовое окно) предназначен для ввода исходной
- •1.6.3. Элементы HscrollBar и VscrollBar.
- •1.6.4. Элемент CommandButton.
- •1.7. События и методы.
- •1.8. Включение изображений в интерфейс пользователя.
- •1.8.1. Элемент Image. Элемент управления Image предназначен в основном для нанесе-
- •1.8.2. Элемент PictureBox.
- •1.9. Сохранение проекта.
- •Глава 2. Данные vb.
- •2.1. Типы данных.
- •2.1.1. Типы числовых данных.
- •2.1.1.1. Целочисленные данные.
- •2.1.1.2. Вещественные данные.
- •2.1.2. Типы нечисловых данных.
- •2.2. Объявление переменных и констант.
- •2.3. Область видимости переменных и констант.
- •2.4. Совместимость и преобразование типов данных.
- •2.5. Ввод исходных данных и вывод результатов обработки.
- •2.5.1. Окно сообщений. Оператор и функция MsgBox.
- •2.6. Форматирование вывода чисел.
- •Глава 3. Алгоритмизация вычислительных процессов.
- •3.1. Алгоритм и его свойства.
- •3.2. Типы вычислительных процессов.
- •3.3. Операторы vb.
- •3.4. Логические выражения.
- •3.5. Управляющие конструкции.
- •3.5.1. Операторы ветвлений.
- •3.5.1.1. Условный оператор.
- •3.5.1.2. Оператор выбора.
- •3.5.2. Операторы циклов.
- •3.5.2.1. Регулярный цикл.
- •3.5.2.2. Итерационные циклы.
- •3.5.2.3. Цикл перечислимого типа.
- •3.5.3. Элементы выбора.
- •3.5.3.1. Элемент CheckBox.
- •3.5.3.2. Элемент OptionButton.
- •3.5.4. Элемент управления и функция Timer.
- •3.5.5. Дата и время.
- •3.5.6. Оператор DoEvents.
- •3.5.7. Объединение кнопок в группы.
- •3.5.7.1. Элемент Frame.
- •3.6. Списки.
- •3.6.1. Элемент ListBox.
- •3.6.2. Элемент ComboBox.
- •Глава 4. Массивы.
- •4.1. Одномерные массивы.
- •4.2. Двумерные массивы.
- •4.3. Статические и динамические массивы.
- •4.4. Функция Array.
- •4.5. Генератор случайных чисел.
- •4.6. Функции lBound и uBound.
- •4.7. Массивы элементов управления.
- •4.8. Сопоставление массивов и списков.
- •4.9. Элемент msFlexGrid.
- •4.10. Упорядочение строк элемента msFlexGrid.
- •Глава 5. Процедуры и функции полоьзователя.
- •5.1. Создание стандартного модуля в приложении.
- •5.2.2. Вызов процедуры на выполнение.
- •5.3. Функции пользователя.
- •Глава 6. Обработка текстовой информации.
- •6.1. Изменение регистра символов в тексте.
- •6.2. Поиск заданной подстроки в тексте.
- •6.3. Выборка части текста.
- •6.4. Замена символов в тексте.
- •6.5. Удаление лишних пробелов из строки текста.
- •6.6. Инвертирование строк.
- •6.7. Преобразование текстовых строк в числа и наоборот.
- •6.8. Определение длины текста.
- •Глава 7. Создание меню пользователя.
- •Глава 8. Пользовательский тип данных.
- •8.1. Записи.
- •8.2. Сложные структуры данных.
- •Глава 9. Файлы.
- •9.1. Файлы последовательного доступа.
- •9.1.1. Открытие файла последовательного доступа.
- •9.1.2. Запись информации в файл.
- •9.1.3. Чтение информации из файла.
- •9.1.4. Закрытие файла.
- •9.2. Файлы произвольного доступа.
- •9.2.1. Открытие файла произвольного доступа.
- •9.2.2. Запись информации в файл.
- •9.4. Операции с файлами в vb.
- •9.5. Файловые операторы и функции обработки данных.
- •9.6. Сравнительный пример работы с файлами.
- •Глава 10. Обработка бд Access в среде vb.
- •10.1. Создание бд Access в среде vb.
- •10.2. Использование технологии Data Access Objects (dao).
- •10.2.1. Элемент управления Data.
- •10.2.2. Свойство Recordset элемента Data.
- •10.2.3. Программное связывание элементов.
- •10.3. Технология ActiveX Data Objects (ado).
- •10.3.1. Подключение ado Data к источнику данных (бд).
- •10.3.2. Подключение ado Data к источнику записей.
- •10.3.3. Элемент управления DataGrid.
- •10.4. Объекты ado.
- •10.4.1. Объект Connection.
- •10.4.2. Объект RecordSet.
- •10.4.3. Перемещение по набору записей.
- •10.4.4. Обращение к отдельным полям записи.
- •10.4.5. Выполнение запросов к бд.
- •10.5. Пример обработки бд в рамках технологии ado.
- •Глава 11. Обмен данными между приложениями.
- •11.1. Экспорт данных из бд в текстовый файл.
- •11.2. Технология внедрения и связывания (ole).
- •11.3. Связывание и внедрение на этапе design.
- •11.3.1. Связывание на этапе проектирования. Сразу же после размещения на форме элемента ole появляется
- •11.3.2. Внедрение на этапе проектирования.
- •11.4. Связывание и внедрение объектов на этапе run.
- •11.4.1. Свойства ole-контейнера.
- •11.4.2. Методы ole-контейнера.
- •11.4.3. События, связанные с ole-контейнером.
- •11.4.5. Внедрение объекта на этапе run. Для внедрения объектов в vb-приложение используется метод CreateEmbed. Синтаксис оператора, использующего этот метод:
- •Глава 12. Графические средства vb 6.
- •12.1. Управление цветом.
- •12.2. Изображения в интерфейсе проекта.
- •12.2.1. Наложение изображения на этапе проектирования. Наложение изображения на форму.
- •Восстановление утраченных графических файлов.
- •Наложение изображения на элемент PictureBox.
- •Наложение изображения на элемент CommandButton.
- •12.2.2. Наложение изображений на этапе выполнения.
- •12.3. Использование анимированных изображений.
- •12.3.1. Визуализация анимированных gif-файлов.
- •12.3.2. Визуализация на форме клипов.
- •12.4. Рисунки на графических объектах.
- •12.4.1. Элемент Shape.
- •12.4.2. Элемент Line.
- •12.5. Графические методы.
- •12.5.1. Методы для работы с изображением точки.
- •12.5.2. Метод Line.
- •12.5.3. Метод Circle.
- •12.6. Использование графики для решения отдельных задач.
- •12.6.1. Визуализация процесса сортировки элементов массива.
- •12.6.2. Принадлежность точки заданной области.
- •Приложение 1. Типовые алгоритмы обработки чисел.
- •Приложение 3. Алгоритмы обработки массивов.
- •Приложение 4. Примеры создания процедур и функций.
- •Приложение 5. Пример обработки типизированных файлов.
- •Приложение 6. Пример обработки бд Access в среде vb.
- •Оглавление
- •Глава 1. Vb 6.0 – среда разработки приложений. 4
- •Глава 2. Данные vb. 20
- •Глава 3. Алгоритмизация вычислительных процессов. 33
- •Глава 4. Массивы. 61
- •Глава 5. Процедуры и функции полоьзователя. 77
- •Глава 10. Обработка бд Access в среде vb. 110
- •Глава 11. Обмен данными между приложениями. 139
- •Глава 12. Графические средства vb 6. 150
12.6.2. Принадлежность точки заданной области.
С помощью графических методов могут быть решены некоторые задачи, решение которых обычными способами может вызвать определенные затруднения. Это так называемые задачи “на принадлежность”. Они состоят в том, что на объекте изображается некоторая замкнутая геометрическая фигура и требуется определить, принадлежит ли области этой фигуры точка с вводимыми произвольными координатами. Например, на плоскости расположен треугольник. Нужно ввести координаты произвольной точки на плоскости и выяснить, принадлежит ли эта точка данному треугольнику.
Если координаты вершин треугольника заданы в условии задачи, то решение задачи элементарно и не требует каких либо специальных знаний. Но если координаты вершин треугольника произвольны и должны быть введены, то для решения такой задачи уже требуется знание начал аналитической геометрии, что не всегда соответствует уровню знаний студента к моменту необходимости решать такую задачу.
С помощью графических методов эта задача может быть решена без каких – либо специальных знаний. Идея такого решения заключается в следующем. Вводим произвольные координаты трех вершин треугольника. С помощью метода Line каждую пару вершин соединяем прямыми линиями. В результате получаем изображение треугольника на плоскости. Затем заливаем внутренность полученного треугольника тем же цветом, каким изображен сам треугольник. После этого вводим координаты произвольной точки и с помощью метода Point опрашиваем цвет ее пикселя. Очевидно, если он совпадает с цветом треугольника, то испытуемая точка принадлежит треугольнику, иначе – не принадлежит.
К сожалению, в VB нет средств, позволяющих залить некоторым цветом произвольную замкнутую фигуру. Это можно сделать, обратившись к функциям Windows API, либо запрограммировать заливку “вручную” с помощью метода PSet.
В качестве примера решим такую задачу, когда исследуемой областью является круг с вырезанным в его произвольных местах произвольным количеством “дырок”.
Откроем новый проект и расположим на форме текстовое окно для вывода результата решения задачи и 2 командные кнопки. Добавим к проекту стандартный модуль, в который запишем процедуру, изображающую на форме координатную систему и процедуру, изображающую в этой системе координат исследуемую область.
Код стандартного модуля
Public x_c%, y_c% ' – координаты центра системы координат
Процедура изображения системы координат
Public Sub Coord(objF As Form)
Dim i%, j%, k!
' Эта процедура рисует систему координат на форме.
objF.ForeColor = vbBlack
' Вычисляем коэффициент сжатия, зависящий от установленного
' разрешения экрана
k = 1280 / 1230
' Устанавливаем размеры формы
objF.Width = 8005
objF.Height = Int(objF.Width * k)
' Задаем масштаб на форме
objF.Scale (0, 0)-(250, 250)
' Устанавливаем координаты центра системы координат
x_c = 125: y_c = 125
' Изображаем ось X координатной системы
objF.Line (20, y_c)-(230, y_c)
j = -100
' Размечаем ось X
For i = 25 To 225 Step 10
objF.Line (i, y_c - 2)-(i, y_c + 2)
objF.CurrentX = i - 5: objF.CurrentY = y_c + 2
objF.Print j
j = j + 10
Next i
' Изображаем ось Y координатной системы
objF.Line (x_c, 20)-(x_c, 230)
j = 100
' Размечаем ось Y
For i = 25 To 225 Step 10
objF.Line (x_c - 2, i)-(x_c + 2, i)
objF.CurrentX = x_c + 3: objF.CurrentY = i - 3
If j <> 0 Then objF.Print j
j = j - 10
Next i
End Sub
Процедура изображения исследуемой области
Public Sub Rings(x%(), y%(), r%(), objF As Form)
Dim k%
' Эта процедура изображает на плоскости внешнюю окружность с
‘ расположенными на ней внутренними окружностями произвольных
‘ радиусов с произвольными центрами. Внутренние окружности
‘ образуют "дырки" внутри внешней окружности.
' Рисуем на форме систему координат
Call Coord(objF)
' Вводим параметры внешней окружности
x(0) = InputBox("Введите координату X центра внешней окружности")
x(0) = x(0) + x_c
y(0) = InputBox("Введите координату Y центра внешней окружности")
y(0) = y_c - y(0)
r(0) = InputBox("Введите радиус внешней окружности")
' Рисуем на плоскости красным цветом внешнюю окружность и
‘ заливаем ее так же красным цветом
objF.FillColor = vbRed
objF.FillStyle = vbSolid
objF.Circle (x(0), y(0)), r(0), vbRed
' Восстанавливаем систему координат, так как ее часть
' могла оказаться закрытой внешней окружностью.
Call Coord(objF)
' В цикле изображаем произвольное количество внутренних
‘ окружностей, каждый раз восстанавливая систему координат,
‘ так как любая из них тоже могла закрыть часть системы координат.
k = 0
Do
k = k + 1
objF.FillColor = &HFFFFC0
objF.FillStyle = vbSolid
ReDim Preserve x(0 To k), y(0 To k), r(0 To k)
x(k) = InputBox("Введите координату X центра " & k & "-й внутренней
окружности")
x(k) = x(k) + x_c
y(k) = InputBox("Введите координату Y центра " & k & "-й внутренней
окружности")
y(k) = y_c - y(k)
r(k) = InputBox("Введите радиус " & k & "-й внутренней окружности")
objF.Circle (x(k), y(k)), r(k), vbRed
Call Coord(objF)
Loop Until MsgBox(" Продолжить ввод ?", 36) = vbNo
End Sub
Коды процедур формы
Private Sub Form_Load()
Me.AutoRedraw = True
Me.ScaleMode = vbPixels
End Sub
Private Sub Command1_Click()
Dim k%, x0%, y0%
Dim x%(), y%(), r%()
ReDim x(0 To 0), y(0 To 0), r(0 To 0)
Call Rings(x, y, r, Me)
' РЕШАЕМ ЗАДАЧУ:
' Вводим координаты испытуемой точки
x0 = InputBox("Введите координату X точки"): x0 = x0 + x_c
y0 = InputBox("Введите координату Y точки"): y0 = y_c - y0
' Определяем ее принадлежность заданной области
If Point(x0, y0) = vbRed Then
Text1.Text = " Принадлежит"
Else
Text1.Text = " Не принадлежит"
End If
' Изображаем на координатной плоскости испытуемую точку
PSet (x0, y0), vbBlack
Circle (x0, y0), 1, vbBlue
End Sub
Private Sub Command2_Click()
End
End Sub
Рис. 12.6. Вид формы с результатом решения задачи.
На соответствующем месте рисунка испытуемая точка изображена обведенной небольшим кружком.
Исследуемая область может быть неодносвязной и даже состоять из различных непересекающихся фигур, каждая из которых залита своим цветом. В любом случае достаточно изменить процедуру Rings в модуле для их изображения. Тогда задача будет формулироваться так: Определить, принадлежит ли испытуемая точка хотя бы одной из имеющихся на плоскости фигур и если да, то какой. В этом случае необходимо сравнить цвет пикселя точки с цветом каждой фигуры.