Для найпростішої графіки в Visual Basic (як і в інших Basic "ах) використовуються команди PSet , Line і Circle .
Visual Basic використовує принципи ООП, а значить всі графічні оператори - методи, і повинні мати об'єкт-"господар". Такими господарями, є Форма (Form), Картинка (PictureBox), і призначений для користувача OCX (UserControl). У кожного з них реалізовані, графічні методи і викликати їх слід за всіма правилами, наприклад:Picture1.PSet (1,1) . До цього додам, що при роботі з формою або власним OCX, вони маються на увазі як об'єкт за умовчанням, а значить PSet (1,1) поставить крапку на формі. Або не поставить. Чому?
У цьому ще одна особливість Visual Basic. Об'єкт для малювання потрібно підготувати. У кожного об'єкта, який може містити графіку, є кілька особливих властивостей, розглянемо їх детальніше.
AutoRedraw = True / False - у загальних рисах, - це властивість дозволяє / забороняє малювання. Якщо воно встановлено в True, створюється як-би шар над завантаженої в об'єкт картинкою, на якому власне і малюють. Причому оператори не впливають на завантажену картинку.
ScaleMode - Масштаб. Типово - твіпах (Twips). Вибір одиниць виміру великий, але по-моєму, розумно використовувати тільки ще Поінти (Points) і Піксели (Pixels).
DrawMode - Тип малювання, а точніше логічна операція, застосовувана до існуючого зображенню.
DrawStyle - Стиль малювання. Вам дозволяється вибрати варіант зображення ліній: 0-Повністю (Solid), 1-Тірі (Dash), 2-Точка (Dash), 3-Тірі-точка (Dash-Dot), 4-Тірі-Точка-Точка (Dash-Dot -Dot) і 5-Прозоро (Transparent). Типово Solid
DrawWidth - Розмір точки.
ForeColor - Колір ліній і тексту по умолчанію.Черний за замовчуванням
FillColor - Колір заливки, для замкнутих фігур.Черний за замовчуванням
FillStyle - Стиль заливки для замкнутих фігур : 0-Повністю (solid), 1-Прозорий (Transparent), 2-Горизонтальні лінії (Horizontal Line), 3-Вертикальні лінії (Vertical Line), 4-По діагоналі направо зверху (Upward Diagonal), 5-По Діагоналі направо знизу (Downward Diagonal), 6-Хрест (Cross), 7-Дігональний хрест (Diagonal Cross). За замовчуванням значення - 1. Координати при малюванні відраховуються з лівого верхнього кута. Отже об'єкт ми підготували, тепер розглянемо методи. Почнемо з самого малого - крапки.
PSet [Step] (X, Y) [, Колір] - Малює крапку в координатах (X, Y). При використанні Step відраховує X і Y, як зміщення від координат останньої точки Якщо колір не вказано, використовується колір за замовчуванням (ForeColor).
Line (X1, Y1) - [Step] (X2, Y2), [Колір] [, Bf / B] - Малює лінію (порожній [B] / зафарбований [Bf] прямокутник. Для лінії координати задають початкову та кінцеву точку. Для прямокутника - координати лівого верхнього і правого нижнього кутів відповідно.
Circle (X, Y), Радіус [, Колір] - Малює коло з центром в X, Y, заданим радіусом і кольором (або кольором за замовчуванням). Cls - Очищає екран (не зраджуючи картинку властивості Picture). Основні графічні методи ми розібрали. Тепер поговоримо про втрати і придбання. Як я вже говорив Windows забрала з Basic "а оператори Panit, Get, Put. Але при цьому вона повернула їх об'єднання.
PaintPicture (SrcPicture, X1, Y1, [Width1], [Height1], [X2], [Y2], [Width2], [ Height2], [dwRop]) - Метод копіює зображення з вихідного об'єкта в об'єкт - господар, дотримуючись зазначених параметрах. Розміри об'єктів можуть бути різні. По суті справи PaintPicture - оболонка для API-функцій StretchBlt і BitBlt, так що якщо хочете миєте користуватися ними . Крім цього змінився оператор Print він став абсолютно графічним. Про нього скажу тільки, що місце для виводу тексту визначається властивостями об'єкта-господаря CurrentX , CurrentY . Управління шрифтом через властивість Font , і його властивості.
Метод Scale
Дозволяє створювати нову систему координат. Объекты Form і PictureBox мають абсолютні координати-положення на екрані для об'єкта Form або положення на формі для об'єкта PictureBox, а також розміри(ширина і висота). За замовчуванням прийнята система координат представлена на малюнку

Формат методу
[Ім'я об'єкта.]Scale(X1,Y1)-(X2.Y2)
Ім'я об'єкта може бути відсутнім. В такому випадку за замовчуванням метод Scale застосовується до форми;
(X,Y-нові координати лівого верхнього кута об'єкта, а (X2,Y2) -нові координати правого нижнього кута об'єкта.
Відразу після використання методу Scale старі (абсолютні) координати об'єкта замінюються новими.
Приклад:
Picture1.Scale(-10, 5) - (10 - 5)
Графічне вікно з ім'ям Picture1 буде завширшки 20 і висоту 10(в умовних одиницях)
Координатні осі розташовуються звичним чином: вісь X спрямована зліва на право, вісь Y - знизу вгору, початок координат розташований в центрі даного об'єкта. У цих малюнках розміри не дотримуються
.
Також можна скористатися установкою значень властивостей графічного вікна у вікні властивостей Properties(категорія Scale)
Scale
ScaleHeight -10
ScaleLeft -10
ScaleMode 0-User
ScaleTop 0
ScaleWidth 20
Приклад 2
Picture1.Scale(0,0) - (10, 5)
Графічне вікно з ім'ям Picture1 буде завширшки 10 і заввишки 5( в умовних одиницях)
Координатні осі розташовуються звичним чином; початок координат розташований в лівому нижньому кутку даного об'єкта...

!!! Якщо перед застосуванням графічних методів метод Scale не використовувався,то в якості X та Y будуть використовуватися абсолютні координати объекта.Точка з координатами 0,0 буде розташована в лівому верхньому кутку форми або графічного вікна.
Метод PSet
Метод PSet дозволяє намалювати точку на об'єкті.
Формат методу.
[Ім'я об'єкта]. PSet (X,Y) [,Колір]
Тут Ім'я об'єкта може бути відсутнім. В такому випадку PSet за умовчанням метод застосовується до форми.[Form]
(X,Y) - координати точки, яку ви хочете зобразити на об'єкті;
Колір мовою VisualBasic кодується числом типу Long. Якщо Колір відсутній, то за замовчуванням він буде збігатися зі значенням властивості ForeColor.
Розмір точок можна змінити, встановивши потрібне значення властивості DrawWidth об'єкта. Значенням властивості DrawWidth може бути ціле число 1, 2 , 3, ......(за замовчуванням воно дорівнює 1). Змінити це значення можна за допомогою вікна властивостей або виставивши в програмний код рядка
Picture1.DrawWidth = 3
Приклад
Private Sub Form_Load()
Scale(-10, 10)-(10, -10)
DrawWidth = 20
PSet (0, 0), vbWhite
PSet (-8, 8)
PSet (8, -8)
Picture1.Scale(-10, 10)-(10, -10)
Picture1.DrawWidth = 10
Picture1.PSet (0, 0), vbBlue
Picture1.PSet (-8, 8), vbRed
Picture1.PSet (8, -8), vbGreen
End Sub
Для того щоб відображалась на формі і на об'єкті виконана нами робота, то у вікні властивостей Properties(категорія AutoRedraw - ставимо значення True)
Запускаємо і дивимося що вийшло....

А ось ще приклад:
Private Sub Form_Load()
Scale(-10, 10)-(10, -10)
DrawWidth = 15
PSet (0, 0), vbBlue
PSet (1, 0), vbRed
PSet (2, 0), vbGreen
PSet (3, 0), vbYellow
PSet (4, 0), vbMagenta
PSet (0, -1), vbWhite
PSet (0, -2), vbGreen
PSet (0, -3), vbYellow
PSet (0, -4), vbRed
Scale(10, -10)-(-10, 10)
DrawWidth = 15
PSet (0, 0), vbBlue
PSet (1, 0), vbRed
PSet (2, 0), vbGreen
PSet (3, 0), vbYellow
PSet (4, 0), vbMagenta
PSet (0, -1), vbWhite
PSet (0, -2), vbGreen
PSet (0, -3), vbYellow
PSet (0, -4), vbRed
End Sub

Метод Line
Метод Line дозволяє зображати на об'єкті:
- відрізки прямих ліній;
- зафарбовані або не зафарбовані прямокутники.
Формат методу
[ИмяОбъекта.] Line (X1, Y1) - (X2, Y2) [, Колір [, Прапор ]]
Тут ИмяОбъекта може бути відсутнім. У такому випадку за замовчуванням метод Scale застосовується до форми;
(X1, Y1) - (X2, Y2) - це координати кінців відрізка або двох кутів прямокутника - лівого верхнього і правого нижнього;
Якщо Колір відсутній, то за замовчуванням він буде збігатися зі значенням властивості ForeColor.
Прапор - це символ B або символи BF. У першому випадку викреслюється прямокутник, у другому - зафарбований прямокутник.( Колір зафарбування - це значення параметра Колір.) Якщо використовується символ B,
то прямокутник буде не зафарбований,але тільки в тому випадку, коли у об'єкта , в якому він малюється, значення
FillStile дорівнює 1(Transparent). Це значення встановлено у властивості по замовчуванню. Якщо ви зміните це значення, то прямокутник буде зафарбований. Наприклад, коли значення властивості FillStile дорівнює 0 (Solid), прямокутник буде повністю зафарбований кольором, який визначається значенням властивості FillColor.
Якщо Прапор є, а Колір відсутній, кому відкидати не можна, так як Прапор буде сприйнятий, як Колір.
Для зміни товщини відрізка або контуру прямокутника можна, як і в методі PSet, змінити
значення властивості DrawWidth.
Спільно з методом Line може використовуватися метод Print (наприклад, підписи осей координат). При цьому печатка буде проводитися трохи нижче і правіше точки, на якій закінчилося малювання
відрізка або прямокутника.
Приклади
FillStile дорівнює 1(Transparent).
Private Sub Form_Load()
Scale(-10, 10)-(10, -10)
DrawWidth = 3
Line(-10, 0)-(0, 10)
Line(0, 0)-(5, 10), , B
FillStile = 1
FillColor = vbRed
Line(-8, -5)-(8, -8), vbWhite, B
End Sub

FillStile рівне 0(Solid).
Private Sub Form_Load()
Scale (-10, 10)-(10, -10)
DrawWidth = 3
Line (-10, 0)-(0, 10)
Line (0, 0)-(5, 10), , B
FillStile = 0
FillColor = vbRed
Line (-8, -5)-(8, -8), vbWhite, B
End Sub

При використання функцій для створення графіки досить не зручно щоразу описувати одинакові дії багато разів. Можна скористатись вже відомими способами. Наприклад, це можуть бути цикли.
Нехай нам потрібно створити забор, а зразок цього:

Код програми виглядатиме наступним чином:
Private Sub Form_Load()
Scale (-10, 10)-(10, -10)
DrawWidth = 15
For i = 0 To 30 Step 2
Line (-10 + i, 0)-(-10 + i, 8)
Line (-10 + i, 8)-(-9 + i, 10)
Line (-9 + i, 10)-(-8 + i, 8)
Line (-8 + i, 8)-(-8 + i, 0)
Next i
End Sub
Нехай нам потрібно створити систему координат, де потрібно намалювати позначки і підписати їх.
Розмістимо на форму об’єкт малюнок. Назвемо його PicGraph. В обробник кнопки допишемо:
Private Sub Command1_Click()
Dim SngX As Single, bytI As Integer, y As Single
PicGraph.Scale (-9, 9)-(9, -9)
For SngX = -9 To 9 Step 0.01
y = SngX * SngX
PicGraph.PSet (SngX, y), vbRed
Next SngX
PicGraph.Line (-9, 0)-(9, 0)
PicGraph.DrawWidth = 5
For bytI = -9 To 9
PicGraph.PSet (bytI, 0)
PicGraph.Print bytI
Next bytI
PicGraph.DrawWidth = 1
PicGraph.Line (0, 9)-(0, -9)
PicGraph.DrawWidth = 5
For bytI = -9 To 9
PicGraph.PSet (0, bytI)
PicGraph.Print bytI
Next bytI
End Sub

Для побудови малюнка потяга можна використати такий код програми.

Private Sub Form_Activate()
Scale (0, 0)-(25, 25)
Form1.FillStyle = 0
DrawWidth = 2
Form1.FillColor = QBColor(6)
Line (5, 2)-(9, 5), QBColor(6), B
Form1.FillColor = QBColor(8)
Line (6, 3)-(8, 5), QBColor(6), B
Line (1, 5)-(9, 8), QBColor(6), B
Form1.FillColor = QBColor(3)
Line (2, 6)-(3, 7), QBColor(6), B
Line (4, 6)-(5, 7), QBColor(6), B
Line (2, 4)-(3, 5), QBColor(6), B
Line (1.5, 3)-(3.5, 4), QBColor(6), B
Circle (3, 9), 1, QBColor(6)
Circle (7, 8.5), 1.5, QBColor(6)
Line (9, 6)-(10, 7), QBColor(6), B
Circle (11, 4), 1, QBColor(6)
Circle (13, 4), 1.5, QBColor(6)
Circle (15, 5), 1, QBColor(6)
Form1.FillColor = QBColor(4)
Line (10, 5)-(17, 8), QBColor(6), B
Circle (12, 9), 1, QBColor(6)
Circle (15, 9), 1, QBColor(6)
End Sub
|