4.3 Работа с цветными изображениями
Для отображения графических файлов: растров (.BMP), значков (.ICO), ме-тафайлов (.WMF), файлов в формате JPEG (.JPG) и GIF (.GIF) используются объек-ты Image и PictureBox. Объект Image может использоваться для отображения ста-тических рисунков. PictureBox более сложный объект, кроме отображения рисун-ков он может выполнять функцию контейнера и содержать другие объекты. В PictureBox можно рисовать при помощи различных графических методов.
Если вы решаете задачу, связанную с обработкой изображений, используйте объект PictureBox. Любое изображение на экране монитора - это набор пикселов. Цвет отдельного пиксела изображения задается уровнями трех основных цветов: красного, зеленого и синего. В Visual Basic объект PictureBox имеет методы позво-ляющие получить (Point) и установить (PSet) цвет отдельного пиксела. Однако, как показали эксперименты, эти методы работают очень медленно. Поэтому рекомен-дуется использовать функции динамических библиотек Windows API: GetPixel и SetPixel, которые выполняют те же функции, но работают быстрее.
Функция GetPixel для указанного пиксела возвращает длинное целое, в кото-ром закодированы основные цвета. Длинное целое содержит четыре байта. Первый (младший) байт содержит уровень красного (R), второй байт содержит уровень зе-леного (G), третий байт содержит уровень синего (B), четвертый байт не использу-ется. Уровень каждого основного цвета может принимать значение от 0 до 255.
Функция SetPixel устанавливает цвет указанного пиксела. Цвет задается в виде длинного целого, в котором закодированы уровни основных цветов. Для ко-дировки используется функция RGB(R,G,B).
Пример программы обработки изображений на Visual Basic приведен в при-ложении.
4.4 Работа со строками
Рассмотрим наиболее часто используемые функции Visual Basic при работе со строками.
Функция Str(number) - преобразование числа в строку. Возвращает строку представляющую указанное число. Первый символ строки всегда резервируется для знака числа. Если число положительное, то первым символом будет пробел. В качестве верного десятичного разделителя распознается только точка (.). Пример:

Dim sMyString As String
sMyString = Str(459) ' Возвращает " 459"
sMyString = Str(-459.65) ' Возвращает "-459.65"
sMyString = Str(459.001) ' Возвращает " 459.001"

Функция Val(str) - преобразование строки в число. Возвращает числа, со-держащиеся в строке, как числовое выражение. Функция прекращает чтение строки на первом символе, который не распознается как часть числа. Пробелы, знаки та-буляции пропускаются. Распознает префиксы восьмеричной &O и шестнадцате-ричной &H форм записи чисел. Пример:

Dim dMyValue As Double
dMyValue = Val("2457") ' Возвращает 2457.
dMyValue = Val(" 2 45 7") ' Возвращает 2457.
dMyValue = Val("24 and 57") ' Возвращает 24.
dMyValue = Val("&HFFFF") ' Возвращает -1.

Функция Len(string) - возвращает число символов в указанной строке. При-мер:

Dim sMy As String, l As Long
sMy = "Привет"
l=Len(sMy) ' Возвращает 6

Функция Mid(string, start[, length]) - выделение указанной части строки в отдельную строку. Параметры: string - исходная строка, start - номер позиции в строке с которой начинается выделение, length - число выделяемых символов (не-обязательный параметр). Если параметр length отсутствует, то выделяются все символы со стартовой позиции до конца исходной строки. Пример:

Dim sMyString As String, sFirstWord As String
Dim sLastWord As String, sMidWords As String
sMyString = "Это пример функции" ' Исходная строка
sFirstWord = Mid(sMyString, 1, 3) ' Возвращает "Это"
sLastWord = Mid(sMyString, 12, 7) ' Возвращает "функции"
sMidWords = Mid(sMyString, 5) ' Возвращает "пример функции"

Функция InStr([start, ]string1, string2[, compare]) - поиск одной строки в другой. В случае успешного поиска возвращает номер позиции найденного фраг-мента в исходной строке. Параметры: start - номер позиции в исходной строке, с которой начинается поиск (необязательный параметр, при его отсутствии, поиск с начала строки); string1 - исходная строка, в которой будет проводиться поиск; string2 - строка, которая ищется; compare - тип сравнения символов (необязатель-ный параметр). Параметр compare может принимать значения: 0 - бинарное срав-нение (с учетом регистра), 1 - текстовое сравнение (без учета регистра). Если па-раметр compare отсутствует, то тип сравнения определяется оператором Option Compare, который может находиться в разделе описаний модуля. Пример:

Dim sString As String, sSearch As String, iPos As Integer
sString ="XXppXXppXXPPXXPP" ' Исходная строка
sSearch = "PP" ' строка, которую требуется найти
' текстовое сравнение с позиции 5
iPos = Instr(5, sString, sSearch, 1) ' Возвращает 7
' бинарное сравнение с позиции 1
iPos = Instr(1, sString, sSearch, 0) ' Возвращает 11
iPos = Instr(1, sString, "WW") ' Возвращает 0 (не найдена)


Основы физики и электротехники. Лекции, курсовые, задачи, учебники