Пропустить навигацию.
Главная

Что позволяет рисовать система VB?

Прежде всего, познакомимся с выбором системы координат и единиц измерения линейных величин, т.к. Visual Basic допускает гораздо более широкие возможности по сравнению со своими более именитыми коллегами. По умолчанию, в каждом графическом объекте действует своя локальная система координат, начало которой расположено в левом верхнем углу. Ось x направлена в общепринятом направлении — вправо, а ось y — вниз. В качестве единиц измерения по умолчанию действуют твипы. В одном логическом дюйме содержится 1440 твипов, в одном логическом сантиметре — 567 твипов. Термин логический дюйм, логический сантиметр используются здесь потому, что на экране нельзя точно измерять расстояния из-за возможности сжимать или растягивать изображение с помощью соответствующих средств управления монитором. Но при выдаче изображений на принтер логические единицы практически совпадают с общепринятыми.

Возможность ввести свою систему координат, в которой и оси направлены в привычном направлении, и физическая область определения рисунка вписывается в отведенное ей место на экране, предоставляется методом Scale. Идеология этого метода заимствована из техники масштабирования изображений, выводимых на плоттеры. Перед тем как построить какое-либо изображение на листе установленного формата плоттеру сообщают, каким программным координатам должны соответствовать противоположные углы листа бумаги. Примерно так же поступает и метод Scale:

object.Scale (x1,y1)-(x2,y2)

Точка с координатами (x1,y1) определяет положение левого верхнего угла объекта (точнее — допустимой области рисования на объекте), а точка с координатами (x2,y2) — положение правого нижнего угла объекта. По заданным координатам система будет преобразовывать координат программных точек в систему локальных координат объекта (а в конечном итоге — в пикселы экрана). Если метод Scale использован без указания графического объекта, то система координат устанавливается для формы приложения.

Метод Scale может быть вызван без указания координат обеих точек. В этом случае восстанавливается система координат объекта, действовавшая по умолчанию.

Система координат, установленная для объекта по умолчанию или выбранная пользователем, позволяет задавать точки канвы как в абсолютных, так и в относительных координатах. Координаты точек всегда заключаются в круглые скобки и имеют тип Single, т.е. могут быть заданы вещественными значениями. Перед относительными координатами точек записывается служебное слово STEP. Почти все графические системы используют понятие графического курсора или так называемой текущей точки (Current Point, сокращенно CP). В Visual Basic для обозначения позиции текущей точки на канве графического объекта используются свойства CurrentX и CurrentY. Перед началом работы текущая точка системой устанавливается в начало координат, а потом, в зависимости от выполняемых графических операций перемещается в ту или иную позицию. Например, при построении отрезка невидимый графический курсор перемещается в конечную точку отрезка. Относительные координаты фактически являются приращениями к позиции текущей точки.

Единицы измерения линейных величин на канве графического объекта определяются целочисленным значением свойства ScaleMode, которое может быть задано с помощью одной из мнемонических констант, приведенных в табл. 8.6.

Таблица 8.6

Значение Константа Единицы измерения
0 vbUser Определены пользователем с помощью метода Scale
1 vbTwips Твипы (1 твип = 0.01764 мм, в 1 дюйме 1440 твипов)
2 vbPoints Пункты (1 пункт = 0.3528 мм, в 1 дюйме 72 пункта)
3 vbPixels Пикселы (размер зависит от монитора и разрешения)
4 vbCharacters Символы (по горизонтали одна единица = 120 твипам, по вертикали — 240 твипам,
размер знакоместа = 2.117´4.233 мм)
5 vbInches Дюймы (1 дюйм = 2.54 см)
6 vbMillimeters Миллиметры
7 vbCentimeters Сантиметры

При выборе любой единицы измерения длины кроме ScaleMode=vbUser начало координат располагается в левом верхнем углу графического объекта, и ось y направлена вниз. В пользовательской системе координат ось x может быть направлена как вправо, так и влево, а ось y — вверх или вниз. В любом системе координат положение левого верхнего угла канвы графического объекта определяется значениями свойств ScaleLeft и ScaleTop. Ширина и высота канвы объекта в выбранной системе координат совпадает со значениями свойств ScaleWidth и ScaleHeight.

Приложение 8_06 (VB).

Следующий пример демонстрирует использование каждой из единиц измерения длины:

Private Sub Command1_Click()

Cls

ScaleMode = 1

Caption = "vbTwips, сторона=1440"

Line (15, 15)-(1455, 1455), , B

End Sub

Private Sub Command2_Click()

Cls

ScaleMode = 2

Caption = "vbPoints, сторона=72"

Line (1, 1)-(73, 73), , B

End Sub

Private Sub Command3_Click()

Cls

ScaleMode = 3

Caption = "vbPixels, сторона=96"

Line (1, 1)-(97, 97), , B

End Sub

Private Sub Command4_Click()

Cls

ScaleMode = 4

Caption = "vbCharacters, стороны = 12 х 6"

Line (0, 0)-(12, 6), , B

End Sub

Private Sub Command5_Click()

Cls

ScaleMode = 5

Caption = "vbInches, сторона = 1"

Line (0, 0)-(1, 1), , B

End Sub

Private Sub Command6_Click()

Cls

ScaleMode = 6

Caption = "vbMillimeters, сторона =25.4"

Line (0, 0)-(25.4, 25.4), , B

End Sub

Private Sub Command7_Click()

Cls

ScaleMode = 7

Caption = "vbCentimeters, сторона =2.54"

Line (0, 0)-(2.54, 2.54), , B

End Sub

Private Sub Command8_Click()

Cls

Scale (-100, 100)-(100, -100)

Circle (0, 0), 20

Caption = "vbUser"

End Sub

На форме этого приложения расположены 8 командных кнопок с надписями, соответствующими той или иной единице измерения длины (рис. 8.4). Щелчок по любой из кнопок приводит к отображению квадрата со стороной, равной 1 дюйму. Исключение составляет режим vbUser, для которого в центре формы (т.е. в начале координат, заданном пользователем) воспроизводится окружность.

Машинная графика

Рис. 8.4. Выбор единиц измерения длины