
- •§ 1. Поняття про інформаційне моделювання
- •Опорний конспект
- •§ 2. Етапи розв’язання задач на комп’ютері
- •§ 3. Середовища розробки проектів
- •§ 4. Властивості елементів керування
- •§ 1. Поняття про інформаційне моделювання 2
- •Контрольна робота № 1
- •§ 5. Створення проектів
- •§ 6. Основні поняття мови програмування
- •9. Процедура кнопки «Обчислити» для задачі про калькулятор.
- •§ 7. Алгоритм та його властивості
- •Запитання
- •§ 8. Різновиди алгоритмів
- •Запитання
- •§ 9. Типи даних
- •§ 10. Лінійні програми
- •Запитання та вправи
- •Контрольна робота № 2
- •§11. Введення даних і виведення результатів
- •§ 12. Текстові файли даних
- •§ 13. Програми з розгалуженням
- •§ 1. Поняття про інформаційне моделювання 2
- •Запитання
- •§ 14. Елементи керування прапорці і перемикачі
- •§ 15. Алгоритмічна конструкція вибір
- •Контрольна робота № 3
- •§ 16*. Списки
- •§ 17. Підпрограми. Функції користувача
- •§ 18. Підпрограми. Процедури користувача
- •§ 19. Цикли. Цикл з параметром
- •§ 20. Задачі пошуку даних. Цикл «доки»
- •§ 21. Застосування циклів
- •Контрольна робота № 4
- •Розділ 2. Складені структури даних
- •§ 22. Одновимірні масиви. Створення масивів
- •§ 23. Пошук даних в одновимірному масиві
- •1. Пошук даних у масиві за заданим критерієм.
- •5. Проект «На метеостанції». Застосування масивів і процедур користувача у vb.
- •§ 24. Впорядкування одновимірного масиву
- •§ 1. Поняття про інформаційне моделювання 2
- •4. Моделювання предметних областей за допомогою масивів.
- •§ 25. Двовимірні масиви. Створення масивів
- •§ 26*. Опрацювання двовимірних масивів
- •1. Елементи керування DataGridView (vb) та DataGrid (vba).
- •Контрольна робота № 5
- •§ 27. Опрацювання текстових даних
- •§ 28. Структури даних (записи)
- •§ 1. Поняття про інформаційне моделювання 2
- •§ 29. Файли даних прямого доступу
- •5. Vb. Команди для роботи з файлами даних прямого доступу.
- •§ 30. Застосування файлів даних послідовного доступу
- •§ 31. Графіка у vb
- •§ 32. Поняття про об’єктно-орієнтоване програмування
- •Розділ 3. Задачі
- •Складніші задачі*
- •Розділ 4. Vba у програмах пакету ms office
- •§ 33. Застосування vba у ms word
- •§ 34. Vba у програмі ms excell
- •§ 35. Задача про облік товарів на складі
- •§ 36. Розв’язування математичних задач
- •§ 37. Робота 3 базами даних
- •Список літератури
- •§ 1. Поняття про інформаційне моделювання 2
§ 31. Графіка у vb
У цьому параграфі розглянемо створення графічних образів у середовищі VB. Цей процес у VB достатньо автоматизований. На жаль, у VBA аналогічні графічні побудови реалізувати складніше.
1. Рисування емблеми. Складемо код для виведення графічних зображень на форму.
Задача 1. У верхній лівій частині форми нарисувати квадрат зі стороною 120 пікселів синім кольором. Замалювати квадрат червоним кольором. У квадрат вписати жовте коло. Замалювати круг синім кольором. У крузі написати великими білими літерами назву компанії чи своє ім’я, наприклад, «Олімп» або Федір тощо (рис.2.7).
Рис. 2.7. Створення емблеми Рис 2.8. Графічний редактор
Сценарій проекту, інтерфейс і програмування. Задамо розміри форми 400 х 300 точок чи інші. Задамо і запам’ятаємо колір тла форми, нехай, бежевий — Beige. Внизу на формі розташуємо дві кнопки: «Намалювати» і «Витерти». Запрограмуємо їх так, щоб після натискання на першу кнопку емблема малювалась, а на другу — витиралась.
Рисунок є графічним об’єктом зі стандартного класу Graphics простору імен (бібліотеки) System.Drawing, що володіє методом рисування CreateGraphics(). Надамо об’єкту-рисунку деяку назву, наприклад, с. Об’єкт с буде задіяний у методах двох кнопок, тому його потрібно описати як глобальний у розділі Declarations перед кодами кнопок так:
Dim с As System.Drawing.Graphics = CreateGraphics()
Розгляньте код кнопки «Намалювати».
Dim f As Font = Forml.DefaultFont
Dim f1 As Font = New FontfArial", 20, FontStyle.Bold)
Dim p As New Pen(Color.Blue) 'Беремо синє перо
Dim b As New SolidBrush(Color.Red) 'і червоний пензель
Dim z As New System.Drawing.Rectangle
z.X = 30 : z.Y = ЗО 'Задаємо координати кута прямокутника
z.Width = 120 : z.Height = 120 'його ширину і висоту
p.Width = 12 'Задаємо товщину пера
p.Color = Color.Blue
c.DrawRectangle(p, z) 'Малюємо прямокутник
p.Color = Color.Green 'Міняємо колір пера
p.Width = 6 'і його ширину
c.DrawRectangle(p, z) 'Малюємо зелений прямокутник
c.FillRectangle(b, z) 'Замальовуємо прямокутник червоним
p.Color = Color.Yellow
c.DrawEllipse(p, z) 'Рисуємо жовте коло
Color = Color.Blue
FillEllipse(b, z) 'Замальовуємо круг синім
Color = Color.White 'Беремо білий пензель
DrawStringfOniMn", f1, b, 43, 74) 'і пишемо текст
Пояснимо усі команди.
Графічними елементами можуть бути стандартні фігури (точки, прямі, прямокутники, кола, еліпси, полігони тощо) і нестандартні (графічні тексти, криві лінії тощо).
Для роботи з графічними текстами оголошують об’єкт f з класу Font, що має стандартні атрибути шрифту (вони містяться у властивості DefaultFont форми).
Щоб створити нестандартний текст, конструюють інший об’єкт з класу Font за допомогою конструктора класу, тобто командою New. Конструктору передають параметри шрифту: назву шрифту, розмір у пунктах і стиль (Bold, Italic тощо). У коді цей об’єкт має назву f1, його створює команда Dim f1.
Геометричні фігури рисують за допомогою пера (об’єкта з класу Pen, який назвемо р). Перо спочатку конструюють (як нове перо деякого кольору, наприклад, Blue), а потім використовують. Перо має такі властивості: ширина (Width) і колір (Color), значення яких можна змінювати.
Замальовують фігури за допомогою пензля (об’єкта з класу Solid- Brash, який назвемо Ь), що також характеризується товщиною і кольором. Пензель використовують, зокрема, для виведення (малювання) текстів.
Опишемо стандартні графічні фігури у VB. Прямокутник задають чотирма параметрами: двома координатами лівої верхньої вершини, шириною і висотою. Еліпс визначають як фігуру, вписану в прямокутник, тобто еліпс задають тими ж атрибутами, що і прямокутник. Коло визначають як фігуру, вписану у квадрат. Квадрат — це прямокутник з рівними сторонами. Точка — це квадрат зі стороною, наприклад, 1 графічна точка. Отже, всі графічні фігури явно чи неявно прив’язані до прямокутника.
Прямокутник — це об’єкт з класу System.Drawing.Rectangle. У нашому коді z — назва цього об’єкта. Його оголошуємо командою Dim z. Об’єкт прямокутник має такі властивості:
z.X, z.Y — координати лівої верхньої вершини;
z.Width, z.Height — ширина і висота об’єкта в точках.
Координати на формі відраховуються у точках від лівого верхнього кута. Х-координата відраховується зліва-направо, а У-координата — зверху-донизу.
Прямокутник рисуватимемо у графічному об’єкті з назвою с. Для графічних об’єктів визначені такі методи:
DrawLine(), DrawRectangle(), DrawEilipse() — рисування лінії, прямокутника, еліпса;
FillRectangle(), FillEllipseQ тощо — замальовування прямокутника, еліпса тощо;
DrawString() — виведення даного типу String у графічний об’єкт;
Print — виведення на принтер;
Clear чи Refresh — витирання з екрана;
Dispose() — вилучення з пам’яті.
Метод DrawLine() має п’ять параметрів: перо р як об’єкт класу Pen і координати (Х1, Y1, Х2, Y2) двох точок на площині.
Інші методи мають по п’ять параметрів (назву пера (р) або пензля (b) і чотири параметри прямокутника) або два параметри (назву пера або пензля і назву прямокутника (z) як об’єкта класу Rectangle).
Метод DrawString() має такі параметри: текстове дане, шрифт і назву пензля, координати виведення.
Перша команда c.DrawRectangle(p, z) рисує в об’єкті с прямокутник z синім кольором товщиною 12 точок. Змінюємо властивості пера. Наступна така команда рисує прямокутник зеленим кольором товщиною 6 точок. Замальовуємо прямокутник пензлем червоного кольору. Вписуємо у прямокутник еліпс (у нашому випадку коло, бо прямокутник є квадратом) пером жовтого кольору товщиною 6 точок. Замальовуємо еліпс пензлем синього кольору. Пензлем білого кольору шириною 4 точки пишемо текст шрифтом f1. Координати 43 і 74 експериментально підібрано так, щоб текст був посередині об’єкта.
Розглянемо код кнопки «Витерти». Він складається з одної команди c.Clear(Color.Beige). Витирання зображення відбувається шляхом замальовування об’єкта кольором тла.
Завдання 1. Реалізуйте проект і поекспериментуйте зі значеннями властивостей пера, пензля, шрифту.
Завдання 2. Створіть власну емблему.
2. Елемент керування PictureBox. Рисунок чи графічний текст можна виводити не безпосередньо на форму, а в елемент PictureBox, що є контейнером для інших об’єктів. Для цього вставте на форму елемент керування PictureBox1 і оголосіть об’єкт, наприклад, с1 з класу Graphics з прикріпленням його до елемента PictureBox1 так:
Dim c1 As Graphics = PictureBox1.CreateGraphics.
Властивості PictureBox можна використати для створення графічного редактора чи графічних анімацій.
Завдання 3. У попередньому коді оголосіть об’єкт с1 і замініть у всіх командах коду назву об’єкта с на с1 — отримаєте емблему не безпосередньо на формі, а в контейнері PictureBox1.
3. Створення графічного редактора. Простий графічний редактор можна створити за допомогою трьох подій миші:
переміщення миші MouseMove;
натискання клавіші MouseDown;
відпускання клавіші миші MouseUp.
Задача 2. Створити графічний редактор, який дає змогу рисувати лінії під час переміщення натиснутої клавіші миші двома кольорами: синім, якщо натиснута ліва клавіша, і червоним, якщо натиснута права.
Інтерфейс. Розташуємо на формі елемент керування PictureBox1, який буде полем для рисування, і задамо властивість його межі BorderStyle як Fixed3D. Ліворуч внизу розташуємо два підписані текстові поля — «Ширина пера:», «Ширина ластику:», а внизу праворуч — дві кнопки «Очистити» і «Зберегти» (див. рис. 2.8).
Програмування. Для елемента PictureBox1 запрограмуємо подію MouseMove. Для цього перейдемо у вікно коду і виберемо зі списку об’єктів PictureBox1, а зі списку подій — MouseMove. Отримаємо заготовку процедури PictureBox1_MouseMove, в яку введемо такий код:
Dim с As Graphics = PictureBox1.CreateGraphics
Dim p As New Pen(Color.Blue)
Dim x As Integer
Dim у As Integer
x = MousePosition.X - ActiveForm.Location.X - 5 - _
PictureBox1.Location.X
у = MousePosition.Y - ActiveForm.Location.Y - 30 - _
PictureBox1.Location.Y
p.Width = Val(TextBoxl.Text)
If MouseButtons = MouseButtons.Left Then
p.Color = Color.Blue
Else
p.Color = Color.Red
End If
If Draw Then c.DrawLine(p, x, y, x + 3, у + 3)
Опишемо код. Значення х та у експериментально визначають так, щоб кінець стрілки вказівника миші правильно задавав позицію рисування. Для цього треба брати до уваги взаємне розташування на екрані вказівника миші, що має координати MousePosition.X та MousePosition.Y, елемента керування PictureBox і форми. Далі задаємо ширину пера і колір. Колір вибираємо так: якщо натиснута ліва клавіша миші, то колір пера синій, якщо права, то — червоний.
Глобальна логічна змінна Draw визначає початок і кінець процесу рисування, який пов’язаний з подіями натискання MouseDown чи відпускання MouseUp клавіші миші. Поки Draw = True рисування ведеться вздовж траєкторії переміщення вказівника миші маленькими прямими довжиною декілька графічних точок.
Для об’єкта PictureBox1 запрограмуємо подію MouseDown так:
Draw = True.
Для об’єкта PictureBox1 запрограмуємо подію MouseUp так:
Draw = False.
Змінну Draw треба описати перед усіма процедурами як глобальну: Dim Draw As Boolean.
Розглянемо, як відбувається рисування. Операційна система майже миттєво реагує на зміну положення миші. Процедура PictureBox1_MouseMove виконується, отримуючи від системи нові значення координат миші та відстежуючи значення змінної Draw. Перо нарисує або не нарисує одну лінію. Оскільки проміжки часу між фіксуванням подій дуже короткі, то у разі нешвидкого переміщення миші складається ілюзія, що перо рисує неперервно. Але це не так. Якщо провести мишею швидко, то розривність процесу малювання стане очевидною. Дослідіть це явище.
Запрограмуємо кнопку Buttonl «Очистити» так (зі зміною тла поля малювання на світло-сірий):
PictureBox1.BackColor = System.Drawing.Color.LightGray
PictureBox1.Refresh()
Завдання 1. Виконайте проект. Введіть у перше текстове поле значення товщини пера (5) і почніть малювати. Намалюйте двоколірну фігуру, міняючи під час малювання товщину пера. Чому, на вашу думку, товщина і вигляд лінії залежать від швидкості переміщення миші?
Завдання 2*. Змініть код, щоб малюнок утворювався не з прямих, а з кіл малого радіусу, що створюють ілюзію точок.
4. Властивості елемента керування PictureBox. Створення анімації. Елемент керування PictureBox можна використати як контейнер для готової картинки, яку поміщають в елемент з графічного файлу. Важливими є такі значення властивості SizeMode цього елемента:
Normal — можна вручну змінювати розміри елемента;
Stretchlmage — автоматично розтягує чи стискує картинку до заданих користувачем розмірів елемента;
AutoSize — робить розміри елемента такі, як і картинки;
Centrelmage — розташовує картинку посередині елемента.
Картинку вставляють з файлу за допомогою властивості Image.
Під час роботи з картинками значення властивості BorderStyle задають як None чи FixedSingle.
Елементи керування PictureBox (чи інші) можна використати для створення анімації. Наприклад, у наступному коді запрограмовано переміщення об’єкта PictureBox1 з картинкою зліва направо з певною швидкістю. Швидкість переміщення залежить від тривалості паузи, яку можна створити штучним способом, наприклад, за допомогою циклу For d = 1 То 1000000 : Next d:
Dim x As Integer
Dim d As Integer
For x = 40 To 200
PictureBox1.Left = x
For d = 1 To 1000000 : Next d
Next x
Рух у горизонтальному напрямку забезпечує зміна значення властивості Left об’єкта PictureBox1.
Рух у вертикальному напрямку регулюється значенням властивості PictureBox1.Тор.
Завдання 1. Створіть анімаційний ефект руху деякого зображення чи елемента керування на формі.
Вправи
Нарисуйте власну емблему, комбінуючи стандартні геометричні фігури, тексти і кольори.
Модифікуйте графічний редактор, підібравши однаковий колір тла PictureBox1 і колір рисування правою клавішею, щоб права клавіша функціонувала як гумка заданої у TextBox2.Text ширини.
Лінія у нашому графічному редакторі утворюється як сукупність штрихів. Створіть лінію, точки якої моделюватимуться квадратами зі стороною 1.
Реалізуйте такий проект: клацання мишею на формі веде до малювання кола в точці, куди показував курсор, і забезпечує виведення координат курсору на екран.
5*. Реалізуйте проект. На екрані (на формі) досить швидко пролітає тарілка або декілька тарілок або на мить з’являються мішені у вигляд: тарілок (кругів). Потрібно їх збити клацанням мишею на них. У раз: влучення лічильник влучень збільшується на одиницю чи настають певні події (з’являються повідомлення, перефарбовується тло форми, звучать фанфари тощо).
6*. Модифікуйте графічний редактор, щоб значення кольорів можна буле передавати з форми у код. Візьміть до уваги, що дане типу String не конвертується в системне значення кольору на зразок Color.Red тощо.
7*. Ознайомтеся самостійно в довідниках чи в мережі з темою «Діалоги» і за допомогою діалогів збережіть рисунок у файлі, запрограмувавши кнопку «Зберегти».