Все вопросы к тесту (html) Информационные технологии
Интегрированная среда разработки Microsoft Visual Basic 2005. Анимация.
Для создания анимации (иллюзии движения на экране какого-либо объекта) применяется принцип смены кадров (изображений), как это делается в мультипликации. Программа, имитирующая движение, должна реализовывать следующие этапы:
- создание изображения на экране;
- реализация временной паузы для того, чтобы глаз зафиксировал изображение;
- коррекция изображения.
Анимация часто используется для показа движения объектов. Чтобы объекты двигались, можно использовать циклы, но удобнее воспользоваться таймером.
Элемент управления Timer - это невидимый секундомер, который обеспечивает доступ к системным часам. Он может быть использован как таймер для обратного отсчета от заданного интервала времени, что позволяет создавать паузы в программе или организовать повторение действий через заданные интервалы времени. Основные свойства таймера:
Name - имя таймера;
Enabled – включение/отключение таймера;
Interval - интервал обновления таймера в миллисекундах, например, если Interval=1000, таймер будет обновляться каждую секунду.
Хотя объекты таймера во время выполнения программы не видны, с каждым таймером связана процедура события, которая выполняется при истечении заданного интервала времени таймера. Установить интервал таймера можно с помощью свойства Interval, а активизировать таймер можно, установив его свойство Enabled в значение True. Когда таймер активизирован, он постоянно работает, выполняя через заданные промежутки времени свою процедуру события до тех пор, пока пользователь не остановит программу или не отключит таймер.
Один из популярных приемов в создании игр - отражение фигур от стенки. Самыми яркими примерами использования отражения фигур от стенки являются такие игры, как пинг-понг и бильярд.
Отскок – частный случай отражения. Это отражение предмета с затуханием. Отскакивающий объект поднимается на меньшую высоту, чем при предыдущем отскоке, теряя часть своей энергии. Используется дополнительная переменная, которая управляет затуханием отскока.
Для организации движения объектов используются свойства Left и Top.
В Visual Basic 2005 применяются методы, позволяющие менять визуальное представление графики на экране:
RotateTransform – поворот на указанное количество градусов, например:
g. RotateTransform(30) – поворот на 30 градусов;
ScaleTransform – изменение масштаба, например:
g. ScaleTransform(2,4) – увеличение масштаба по высоте в два
раза, по ширине - в четыре раза;
TranslateTransform – сдвиг координат по осям координат, например:
g. TranslateTransform(50,10) – сдвиг координат по оси x на 50
пикселов, по оси y – на 10 пикселов.
Изучение анимационных возможностей языка Visual Basic 2005
Проект 1. «Отражение объектов»
1. Запустите Microsoft Visual Basic 2005.
2. Создайте новый проект. Для этого введите команду File-New Project... Выберите тип проекта - Windows Application (Windows-приложение). В окне Name задайте имя проекта – LR7___1.
3. Активизируйте форму Form1 щелчком мыши. В окне Properties (Свойства объекта) выберите свойство Text и присвойте ему значение Отражение объектов.
4. Разместите на форме кнопку Button1, измените свойство Text кнопки – Движение по горизонтали:
5. Разместите на форме элемент управления Label1, измените свойства элемента управления:
AutoSize = True
ForeColor = Red
Font.Size = 20
Font.Style = Bold
Text = O
6. Добавьте на форму элемент управления Timer1. Установите свойство Interval = 50:
7. Дважды щелкните по кнопке Движение по горизонтали и введите событийную процедуру (щелчок по кнопке активизирует таймер, который в свою очередь, сдвигает объект на 1 пиксел влево):
Private Sub Button1___Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Timer1.Enabled = True
End Sub
8. Добавьте событийную процедуру для таймера. Для этого в поле Class Name в режиме редактирования кода программы установите Timer1, в поле Method Name – Tick.
9. Введите событийную процедуру:
Private Sub Timer1___Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If Label1.Left <= 0 Then
' остановка таймера при достижении левого края формы
Timer1.Enabled = False
End If
Label1.Left = Label1.Left - 1
End Sub
10. Сохраните проект. Проверьте работу приложения.
11. Для отражения объекта от края формы введите глобальную переменную direction, отвечающую за направление движения, внесите изменение в процедуру Timer1___Tick(…):
Dim direction As Integer = 1
Private Sub Timer1___Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Label1.Left = Label1.Left - 1 * direction
' Отскок от левого края формы
If Label1.Left <= 0 Then
direction = -1
End If
' Отскок от правого края формы. Учитываем ширину мячика
If Label1.Left >= ClientSize.Width - Label1.Width Then
direction = 1
End If
End Sub
12. Сохраните проект. Проверьте работу приложения.
13. Добавьте на форму две кнопки, одна кнопка останавливает объект, другая обеспечивает движение объекта по вертикали. Введите соответствующие событийные процедуры.
14. Сохраните проект. Проверьте работу приложения.
Проект 2. «Отскоки объектов»
1. Создайте новый проект. Для этого введите команду File-New Project... Выберите тип проекта - Windows Application (Windows-приложение). В окне Name задайте имя проекта – LR7___2.
2. Активизируйте форму Form1 щелчком мыши. В окне Properties (Свойства объекта) выберите свойство Text и присвойте ему значение Отскоки объектов.
3. Разместите на форме кнопку Button1, измените свойство Text кнопки - Старт:
4. Разместите на форме кнопку Button2, обнулите свойство Text кнопки, измените цвет:
5. Добавьте на форму элемент управления Timer1.
6. Введите глобальные переменные:
' Текущая позиция объекта
Dim cy As Integer
' Нижняя граница формы
Dim floorY As Integer = ClientSize.Height
' Скорость падения
Dim ymov As Integer
' Сила притяжения
Dim gravity As Integer = 1
' Коэффициент затухания
Dim decay As Single = 0.9
7. Добавьте событийную процедуру для кнопки Старт:
Private Sub Button1___Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Возвращаем кнопку в верхнюю часть формы
Button2.Top = 10
'Включаем таймер
Timer1.Enabled = True
End Sub
8. Добавьте событийную процедуру для таймера:
Private Sub Timer1___Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
ymov += gravity
cy = Button2.Top + ymov ' Падаем вниз
Button2.Top = cy
If Button2.Height + Button2.Top >= floorY Then
' Если достигли нижней границы формы,
' то отскакиваем вверх, меняя направление движения
' с затуханием скорости
ymov *= -1 * 0.9
Button2.Top = floorY - Button2.Height
End If
End Sub
9. Сохраните проект. Проверьте работу созданного приложения.
Проект 3. «Движение Земли вокруг Солнца»
1. Создайте новый проект. Для этого введите команду File-New Project... Выберите тип проекта - Windows Application (Windows-приложение). В окне Name задайте имя проекта – LR7___3.
2. Активизируйте форму Form1 щелчком мыши. В окне Properties (Свойства объекта) выберите свойство Text и присвойте ему значение Анимация.
3. Добавьте на форму элемент управления Timer1. Включите таймер, установив свойство Enabled = True.
4. Добавьте в проект глобальную переменную, определяющую угол поворота:
Dim f As Integer
5. Добавьте событийную процедуру Form1___Load(…). Для этого в поле Class Name в режиме редактирования кода программы установите (Form Events), в поле Method Name – Load.
Private Sub Form1___Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ClientSize = New Size(400, 400)
f = 0
End Sub
6. Добавьте событийную процедуру Form1___Paint(…) – рисование формы. Для этого в поле Class Name в режиме редактирования кода программы установите (Form Events), в поле Method Name – Paint.
Private Sub Form1___Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim g As Graphics = CreateGraphics()
Dim p1 As New Pen(Color.Blue, 3)
Dim P2 As New SolidBrush(Color.Yellow)
Dim P3 As New SolidBrush(Color.Cyan)
Dim cx As Integer = ClientSize.Width
Dim cy As Integer = ClientSize.Height
g.TranslateTransform(cx / 2, cy / 2)
g.RotateTransform(f)
g.DrawEllipse(p1, -100, -100, 200, 200) ‘рисование орбиты
g.FillEllipse(P2, -20, -20, 40, 40) ‘рисование Солнца
g.FillEllipse(P3, -80, -80, 20, 20) ‘рисование Земли
f = f + 10
If f = 360 Then
f = 0
End If
End Sub
7. Добавьте событийную процедуру для таймера, осуществляющей вызов процедуры Form1___Paint. Для этого в поле Class Name в режиме редактирования кода программы установите Timer1, в поле Method Name – Tick.
Private Sub Timer1___Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Invalidate()
End Sub
8. Сохраните проект. Проверьте работу созданного приложения:
Вариант
Создать проект, имитирующий вращение секундной стрелки:
Для включения/выключения Timer1 необходимо задать свойство таймера (введите прописными буквами):
Для поворота изображения на указанное число градусов используется метод:
Для построения эллипса используется метод (введите прописными буквами):
Код процедуры, выполняющей установку размеров формы 400x400 пикселов:
Private Sub Form1___Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ClientSize = New Size___
End Sub
Введите пропущенное выражение (без пробелов, прописными буквами).
Код процедуры, обеспечивающей вращение квадрата:
Dim f As Integer
Private Sub Form1___Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim g As Graphics = CreateGraphics()
Dim p1 As New Pen(Color.Blue, 4)
Dim p2 As New Pen(Color.Violet, 3)
Dim cx As Integer = ClientSize.Width
Dim cy As Integer = ClientSize.Height
g.TranslateTransform(cx / 2, cy / 2)
g.RotateTransform(f)
g.DrawEllipse(p1, -100, -100, 200, 200)
g.DrawLine(p2, -70, -70, 0, 0)
f = f + 6
If ___ Then
f = 0
End If
End Sub
Введите пропущенное выражение (без пробелов, прописными буквами).
Вариант
Создать проект, обеспечивающий вращение квадрата против часовой стрелки:
Для построения закрашенного квадрата используется метод (введите прописными буквами):
Для установки интервала обновления таймера Timer1 необходимо задать свойство таймера (введите прописными буквами):
Код процедуры, выполняющей установку размеров формы 400x400 пикселов:
Private Sub Form1___Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ClientSize = New ___(400, 400)
End Sub
Введите пропущенное выражение (без пробелов, прописными буквами).
Код процедуры, обеспечивающей вращение квадрата:
Dim f As Integer
Private Sub Form1___Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim g As Graphics = CreateGraphics()
Dim b As New SolidBrush(Color.Fuchsia)
Dim cx As Integer = ClientSize.Width
Dim cy As Integer = ClientSize.Height
g.TranslateTransform(cx / 2, cy / 2)
g.RotateTransform(f)
g.FillRectangle(b, -100, -100, 100, 100)
f = f - 10
If ___ Then
f = 360
End If
End Sub
Введите пропущенное выражение (без пробелов, прописными буквами).
Поворот на указанное количество градусов выполняет метод:
Вариант
Создать проект, обеспечивающий вращение прямой линии по часовой стрелке:
Для включения/выключения Timer1 необходимо задать свойство таймера (введите прописными буквами):
Для построения прямой линии используется метод (введите прописными буквами):
Код процедуры, выполняющей установку размеров формы 400x400 пикселов:
Private Sub Form1___Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ClientSize = New Size___
End Sub
Введите пропущенное выражение (без пробелов, прописными буквами).
Код процедуры, обеспечивающей вращение прямой линии:
Dim f As Integer
Private Sub Form1___Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim g As Graphics = CreateGraphics()
Dim p1 As New Pen(Color.Blue, 3)
Dim cx As Integer = ClientSize.Width
Dim cy As Integer = ClientSize.Height
g.TranslateTransform(cx / 2, cy / 2)
g.RotateTransform(f)
g.DrawLine(p1, -100, -100, 100, 100)
f = f + 10
If ___ Then
f = 0
End If
End Sub
Введите пропущенное выражение (без пробелов, прописными буквами).
Сдвиг координат по осям координат выполняет метод:
Вариант
Создать проект, обеспечивающий движение элемента управления Label из верхнего левого угла в нижний правый угол:
Для установки интервала обновления таймера Timer1 необходимо задать свойство таймера (введите прописными буквами):
Код процедуры, включающей таймер Timer1:
Private Sub Button1___Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
___
End Sub
Введите пропущенный оператор (без пробелов, прописными буквами).
Код процедуры, выполняющей установку размеров формы 200x200 пикселов:
Private Sub Form1___Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ClientSize = New Size___
End Sub
Введите пропущенное выражение (без пробелов, прописными буквами).
Код процедуры, обрабатывающей события от таймера:
Private Sub Timer1___Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Label1.Left =___.Left + 1
Label1.Top =___.Top + 1
If Label1.Left >= ClientSize.Width - Label1.Width Then
Timer1.Enabled = False
End If
End Sub
Введите пропущенное выражение (без пробелов, прописными буквами).
Событие, инициируемое таймером через заданные промежутки времени:
Вариант
Создать проект, обеспечивающий движение элемента управления Label из верхнего правого угла в нижний левый угол:
Для включения/выключения Timer1 необходимо задать свойство таймера (введите прописными буквами):
Код процедуры, включающей таймер Timer1:
Private Sub Button1___Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Timer1.Enabled = ___
End Sub
Введите пропущенное выражение (без пробелов, прописными буквами).
Код процедуры, выполняющей установку размеров формы 200x200 пикселов:
Private Sub Form1___Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ClientSize = New ___(200, 200)
End Sub
Введите пропущенное выражение (без пробелов, прописными буквами).
Код процедуры, обрабатывающей события от таймера:
Private Sub Timer1___Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Label1.Left = Label1.Left ___ 1
Label1.Top = Label1.Top + 1
If Label1.Left <= 0 Then
Timer1.Enabled = False
End If
End Sub
Введите пропущенный оператор.
Событие, инициируемое таймером через заданные промежутки времени:
1234.03.01;ЭПТ2.01;1
Цель:
изучение системы программирования Microsoft Visual Basic 2005.
Результаты обучения:
После успешного завершения занятия пользователь должен:
· уметь создавать анимационные объекты.
Список рекомендуемой литературы:
1. Степанов А., Шевякова Д. Самоучитель Visual Basic 2005. – СПб.: BHV, 2006.
2. Богданов М.Р. Visual Basic 2005 на примерах. – СПб.: BHV, 2007.
3. Патрик Т., Крейг К. Visual Basic 2005: рецепты программирования. – СПб.: BHV, 2008.
4. Балена Ф. Программирование на Microsoft Visual Basic 2005. – М.: «Эком», 2008.
Используемые программы:
Microsoft Visual Basic 2005 Express Edition
Microsoft Visual Basic 2005 Express Edition — средство разработки программного обеспечения, включающее язык программирования и среду разработки. Данный продукт предназначен для создания небольших Windows-приложений на основе технологии Windows Forms, являющейся частью Microsoft .NET. С помощью Visual Basic 2005 Express Edition можно создавать консольные приложения и компоненты.
Тестирование
В Microsoft Visual Basic 2005 Express Edition активизировать таймер можно, установив его свойство Enabled в значение
В Microsoft Visual Basic 2005 Express Edition установить интервал обновления таймера можно с помощью свойства
Для организации движения объектов используются свойства объектов:
Укажите соответствие между названием метода Microsoft Visual Basic 2005 и его назначением
Элемент управления, обеспечивающий доступ к системным часам, - это
Использование элементов управления в программах
Проект 1. «Нестандартный вид элементов управления»
1. Запустите Microsoft Visual Basic 2005.
2. Создайте новый проект. Для этого введите команду File-New Project... Выберите тип проекта - Windows Application (Windows-приложение). В окне Name задайте имя проекта – LR8___1.
3. Активизируйте форму Form1 щелчком мыши. В окне Properties (Свойства объекта) выберите свойство Text и присвойте ему значение Нестандартный вид элементов управления.
4. Разместите на форме кнопку Button1:
5. Дважды щелкните по кнопке Button1 и введите событийную процедуру (при нажатии на кнопку кнопка становится овальной):
Private Sub Button1___Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim gp As New GraphicsPath
Dim g As Graphics = CreateGraphics()
' Создадим новый прямоугольник с размерами кнопки
Dim newRectangle As Rectangle = Button1.ClientRectangle
' Уменьшим размеры прямоугольника
newRectangle.Inflate(-3, -3)
'Создадим эллипс с полученными размерами
gp.AddEllipse(newRectangle)
Button1.Region = New Region(gp)
' Нарисуем окантовку для круглой кнопки
g.DrawEllipse(New Pen(Color.Gray, 2), Button1.Left + 1, ___
Button1.Top + 1, ___
Button1.Width - 3, Button1.Height - 3)
'Освобождаем ресурсы
g.Dispose()
End Sub
6. Перед описанием класса формы добавьте строку:
Imports System.Drawing.Drawing2D
Public Class Form1
………………………
End Class
7. Сохраните проект. Проверьте работу приложения.
8. Разместите на форме элемент управления CheckBox1:
9. Добавьте событийную процедуру Form1___Load(…) (при загрузке формы все элементы управления CheckBox обводятся красной рамкой). Для этого в поле Class Name в режиме редактирования кода программы установите (Form Events), в поле Method Name – Load, добавьте код событийной процедуры:
Private Sub Form1___Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim g As Graphics = e.Graphics
Dim p As New Pen(Color.Red, 3)
Dim ctrl As Control
For Each ctrl In Me.Controls
If TypeOf ctrl Is CheckBox Then
g.DrawRectangle(p, New ___
Rectangle(ctrl.Location, ctrl.Size))
End If
Next
End Sub
10. Сохраните проект. Проверьте работу приложения.
Проект 2. «Блокировка ввода нечисловых символов»
1. Создайте новый проект. Для этого введите команду File-New Project... Выберите тип проекта - Windows Application (Windows-приложение). В окне Name задайте имя проекта – LR8___2.
2. Активизируйте форму Form1 щелчком мыши. В окне Properties (Свойства объекта) выберите свойство Text и присвойте ему значение Блокировка ввода нечисловых символов.
3. Выполните команду Project-Add Class… В поле Name: введите имя создаваемого класса DigitOnly. Нажмите на кнопку Add.
4. Добавьте описание класса DigitOnly, обеспечивающего ввод только чисел. Текст с описанием класса содержится в рабочей директории в файле DigitOnly.txt.
5. Перейдите на главную форму проекта и разместите на форме два элемента управления TextBox:
6. В окне Solution Explorer нажмите на кнопку Show All Files:
7. Раскройте список Form1.vb, откройте модуль Form1.Disigner.vb:
8. Внесите изменения в процедуру:
<System.Diagnostics.DebuggerStepThrough()> ___
Private Sub InitializeComponent()
Me.TextBox1 = New LR8___2.DigitOnly
Me.TextBox2 = New System.Windows.Forms.TextBox
Me.SuspendLayout()
…………..
End Sub
9. Сохраните проект. Проверьте работу созданного приложения. В первое текстовое поле можно вводить только числа:
10. Измените проект так, чтобы во второе текстовое поле можно было вводить только числовые данные.
Разработаем проект, создающий новый элемент управления ListView. Элемент управления ListView используется для отображения списка различных элементов.
Проект 3. «Создание элемента управления ListView»
1. Создайте новый проект. Для этого введите команду File-New Project... Выберите тип проекта - Windows Application (Windows-приложение). В окне Name задайте имя проекта – LR8___3.
2. Активизируйте форму Form1 щелчком мыши. В окне Properties (Свойства объекта) выберите свойство Text и присвойте ему значение Создание элемента управления ListView.
3. Разместите на форме элемент управления Button1, установите значение свойства Text - Создать:
4. Сформируем таблицу с заголовками. Дважды щелкните мышкой по кнопке Button1, введите код событийной процедуры:
Private Sub Button1___Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Создадим элемент управления ListView
Dim listView1 As New ListView()
ListView1.Bounds = New Rectangle(New Point(10, 10), New Size(300, 200))
' Вид элемента управления
listView1.View = View.Details
' Разрешить редактирование текста элемента управления
listView1.LabelEdit = True
' Разрешить переупорядочивание столбцов
listView1.AllowColumnReorder = True
' Показать check boxes.
ListView1.CheckBoxes = True
' При выборе выбираются элемент и подэлементы
listView1.FullRowSelect = True
' Показать сетку
listView1.GridLines = True
' Выполнить сортировку по возрастанию
listView1.Sorting = SortOrder.Ascending
' Формирование столбцов с заголовками
listView1.Columns.Add("Item Column", -2, HorizontalAlignment.Left)
listView1.Columns.Add("Column 2", -2, HorizontalAlignment.Left)
listView1.Columns.Add("Column 3", -2, HorizontalAlignment.Left)
listView1.Columns.Add("Column 4", -2, HorizontalAlignment.Center)
' Добавить в проект элемент управления ListView
Me.Controls.Add(listView1)
End Sub
5. Сохраните проект. Проверьте работу созданного приложения:
6. Заполним таблицу. Внесите изменения в процедуру Private Sub Button1___Click(…). Перед оператором Me.Controls.Add(listView2) добавьте строки:
'Создадим три элемента и три набора подэлементов для каждого элемента
Dim item1 As New ListViewItem("item1", 0)
' Установить CheckBox
item1.Checked = True
item1.SubItems.Add("1")
item1.SubItems.Add("2")
item1.SubItems.Add("3")
Dim item2 As New ListViewItem("item2", 0)
item2.SubItems.Add("4")
item2.SubItems.Add("5")
item2.SubItems.Add("6")
Dim item3 As New ListViewItem("item3", 0)
' Установить CheckBox
item3.Checked = True
item3.SubItems.Add("7")
item3.SubItems.Add("8")
item3.SubItems.Add("9")
' Добавить элементы к ListView
listView1.Items.AddRange(New ListViewItem() {item1, item2, item3})
7. Сохраните проект. Проверьте работу созданного приложения:
8. Добавим в таблицу графические изображения (необходимые графические изображения находятся в рабочей директории). Внесите изменения в процедуру Private Sub Button1___Click(…). Перед оператором Me.Controls.Add(listView2) добавьте строки:
' Создать объект ImageList
Dim imageListSmall As New ImageList()
' Инициализировать объекты ImageList растровыми изображениями.
imageListSmall.Images.Add(Bitmap.FromFile("…\1.jpg"))
imageListSmall.Images.Add(Bitmap.FromFile("…\2.jpg"))
imageListSmall.Images.Add(Bitmap.FromFile("…\3.jpg"))
' Связать объекты ImageList с объектом ListView.
ListView1.SmallImageList = imageListSmall
9. Внесите изменения в строки (второй параметр указывает на номер графического изображения из списка ImageList):
Dim item1 As New ListViewItem("item1", 0)
Dim item2 As New ListViewItem("item2", 1)
Dim item3 As New ListViewItem("item3", 2)
10. Сохраните проект. Проверьте работу созданного приложения:
11. Добавьте в созданный элемент управления ListView один столбец и одну строку:
12. Сохраните проект. Проверьте работу созданного приложения.
Интегрированная среда разработки Microsoft Visual Basic 2005. Использование элементов управления.
Текстовое поле – один из самых используемых элементов управления в приложениях. Область применения – текстовые редакторы, поля для ввода паролей, информационные сообщения и др.
На практике достаточно часто встречается задача ввода в текстовое поле только числовых значений. Существует множество реализаций данной задачи. У текстового поля существует стиль ES___NUMBER, который позволяет блокировать ввод любых нечисловых данных. Но этого недостаточно для решения проблемы. Можно обойти это ограничение путем вставки текста из буфера. Поэтому необходимо осуществлять проверку данных, находящихся в буфере обмена.
Элементами управления называют объекты, которые мы располагаем на форме (например, кнопки, надписи, текстовые поля) или в специальном контейнере (например, таймер). Число встроенных элементов управления постоянно увеличивается. Кроме того, программист может сам создать новый элемент управления для решения собственных задач, либо приобрести его у сторонних разработчиков.
Для создания элементов управления произвольной формы используется свойство Region, которое отбрасывает ненужные области элемента управления.
Например, фрагмент кода, формирующего овальную кнопку:
Dim gp As New GraphicsPath
Dim g As Graphics = CreateGraphics()
' Создадим новый прямоугольник с размерами кнопки
Dim newRectangle As Rectangle = Button1.ClientRectangle
' Уменьшим размеры прямоугольника
newRectangle.Inflate(-3, -3)
'Создадим эллипс с полученными размерами
gp.AddEllipse(newRectangle)
Button1.Region = New Region(gp)
' Нарисуем окантовку для круглой кнопки
g.DrawEllipse(New Pen(Color.Gray, 2), Button1.Left + 1, ___
Button1.Top + 1, ___
Button1.Width - 3, Button1.Height - 3)
Уменьшение прямоугольника понадобилось для того, чтобы не видеть окантовки кнопки. Аналогично можно поступать и с другими элементами управления.
Вариант
Разработать проект, создающий элемент управления ListView:
Для создания элемента управления ListView используется метод (введите прописными буквами):
………….Dim listView1 As New ___()
Программный код, выполняющий формирование графических изображений элемента управления ListView:
Dim imageListSmall As New ___()
imageListSmall.Images.Add(Bitmap.FromFile("C:\3\1.jpg"))
imageListSmall.Images.Add(Bitmap.FromFile("C:\3\2.jpg"))
ListView1.SmallImageList = imageListSmall
Введите пропущенное выражение (без пробелов, прописными буквами).
Программный код, выполняющий формирование столбцов с заголовками элемента управления ListView:
listView1.___.Add("№", -2, HorizontalAlignment.Center)
listView1.___.Add("Время", -2, HorizontalAlignment.Center)
listView1.___.Add("Событие", -2, HorizontalAlignment.Center)
Введите пропущенное выражение (без пробелов, прописными буквами).
Программный код, выполняющий формирование строк элемента управления ListView:
Dim item1 As New ListViewItem("1", 0)
item1.SubItems.___("9:00")
item1.SubItems.___ ("Завтрак")
Dim item2 As New ListViewItem("2", 1)
item2.SubItems.___ ("10:00")
item2.SubItems.___ ("Встреча")
Dim item3 As New ListViewItem("3", 0)
item3.SubItems.___ ("14:00")
item3.SubItems.___ ("Обед")
listView1.Items.AddRange(New ListViewItem() {item1, item2, item3})
Введите пропущенное выражение (без пробелов, прописными буквами).
Вариант
Разработать проект, создающий элемент управления ListView:
Для создания элемента управления ListView используется метод (введите прописными буквами):
………….Dim listView1 As New ___()
Оператор, выполняющий отображение сетки элемента управления ListView:
listView1.___ = True
Введите пропущенное выражение (без пробелов, прописными буквами).
Программный код, выполняющий формирование столбцов с заголовками элемента управления ListView:
listView1.Columns.___("Товар", -2, HorizontalAlignment.Center)
listView1.Columns.___("Цена", -2, HorizontalAlignment.Center)
listView1.Columns.___("Количество", -2, HorizontalAlignment.Center)
Введите пропущенное выражение (без пробелов, прописными буквами).
Программный код, выполняющий формирование строк элемента управления ListView:
Dim item1 As New ListViewItem("Товар A", 0)
item1.___.Add("10")
item1.___.Add("100")
Dim item2 As New ListViewItem("Товар B", 0)
item2.___.Add("30")
item2.___.Add("120")
Dim item3 As New ListViewItem("Товар C", 0)
item3.___.Add("20")
item3.___.Add("110")
listView1.Items.AddRange(New ListViewItem() {item1, item2, item3})
Введите пропущенное выражение (без пробелов, прописными буквами).
Вариант
Создать проект, который обводит овальной рамкой все элементы управления Label формы:
Вид формы при запуске:
Нажатие на кнопку Преобразовать:
Для построения овала используется метод (введите прописными буквами):
Для создания графического объекта используется метод (введите прописными буквами):
Dim g As Graphics = ___()
Программный код, выполняющий обводку овальную рамку всех элементов управления Label формы:
Dim ctrl As Control
For Each ctrl In Me.Controls
If TypeOf ctrl Is ___ Then
g.DrawEllipse(p, New Rectangle(ctrl.Left - 5, ctrl.Top - 5, ctrl.Width + 10, ctrl.Height + 10))
End If
Next
Введите пропущенное выражение (без пробелов, прописными буквами).
Программный код, выполняющий создание пера зеленого цвета в три пиксела:
Dim p As New ___(Color.Green, 3)
Введите пропущенное выражение (без пробелов, прописными буквами).
Вариант
Создать проект, преобразующий форму элемента управления PictureBox в овальную:
Вид формы при запуске:
Нажатие на кнопку Преобразовать:
Для построения овала используется метод (введите прописными буквами):
Программный код, выполняющий рисование окантовки для овального элемента управления PictureBox1:
Dim gp As New GraphicsPath
' Нарисуем окантовку для овального текстового поля
g.DrawEllipse(New ___(Color.Red, 3), PictureBox1.Left + 1, ___
PictureBox1.Top + 1, ___
PictureBox1.Width - 3, PictureBox1.Height - 3)
Введите пропущенное выражение (без пробелов, прописными буквами).
Программный код, выполняющий создание эллипса с размерами прямоугольного элемента управления PictureBox1:
Dim gp As New GraphicsPath
'Создадим эллипс с полученными размерами
gp.AddEllipse(newRectangle)
PictureBox1.___ = New Region(gp)
Введите пропущенное выражение (без пробелов, прописными буквами).
Программный код, выполняющий сохранение размеров исходного прямоугольного элемента управления PictureBox1:
Dim newRectangle As ___ = PictureBox1.ClientRectangle
Введите пропущенное выражение (без пробелов, прописными буквами).
Вариант
Создать проект, преобразующий форму элемента управления TextBox в овальную:
Вид формы при запуске:
Нажатие на кнопку Преобразовать:
Для построения овала используется метод (введите прописными буквами):
Программный код, выполняющий рисование окантовки для овального текстового поля:
Dim gp As New GraphicsPath
' Нарисуем окантовку для овального текстового поля
g.DrawEllipse(New Pen(Color.Red, 4), TextBox1.Left + 1, ___
TextBox1.Top + 1, ___
___.Width - 3, ___.Height - 3)
Введите пропущенное выражение (без пробелов, прописными буквами).
Программный код, выполняющий создание эллипса с размерами исходного прямоугольного текстового поля:
Dim gp As New GraphicsPath
'Создадим эллипс с размерами прямоугольного текстового поля
gp.AddEllipse(newRectangle)
TextBox1.___ = New Region(gp)
Введите пропущенное выражение (без пробелов, прописными буквами).
Программный код, выполняющий сохранение размеров исходного прямоугольного текстового поля:
Dim newRectangle As ___ = TextBox1.ClientRectangle
Введите пропущенное выражение (без пробелов, прописными буквами).
1234.03.01;ЭПТ2.02;1
Цель:
изучение системы программирования Microsoft Visual Basic 2005.
Результаты обучения:
После успешного завершения занятия пользователь должен уметь:
· создавать элементы управления произвольной формы;
· осуществлять контроль вводимых данных;
· создавать новые элементы управления.
Список рекомендуемой литературы:
1. Степанов А., Шевякова Д. Самоучитель Visual Basic 2005. – СПб.: BHV, 2006.
2. Богданов М.Р. Visual Basic 2005 на примерах. – СПб.: BHV, 2007.
3. Патрик Т., Крейг К. Visual Basic 2005: рецепты программирования. – СПб.: BHV, 2008.
4. Балена Ф. Программирование на Microsoft Visual Basic 2005. – М.: «Эком», 2008.
Используемые программы:
Microsoft Visual Basic 2005 Express Edition
Используемые файлы:
DigitOnly.txt, 1.jpg, 2.jpg, 3.jpg, pic.jpg
Microsoft Visual Basic 2005 Express Edition — средство разработки программного обеспечения, включающее язык программирования и среду разработки. Данный продукт предназначен для создания небольших Windows-приложений на основе технологии Windows Forms, являющейся частью Microsoft .NET. С помощью Visual Basic 2005 Express Edition можно создавать консольные приложения и компоненты.
Тестирование
В Microsoft Visual Basic 2005 Express Edition для создания нового класса используется команда
В Microsoft Visual Basic 2005 Express Edition для создания элементов управления произвольной формы используется свойство
В Microsoft Visual Basic 2005 Express Edition можно создать новый элемент управления (Да/Нет)
Объекты, которые располагаются на форме (например, кнопки, надписи, текстовые поля) или в специальном контейнере (например, таймер), называют элементами
Стиль текстового поля, позволяющий блокировать ввод любых нечисловых данных,
Использование текстовых эффектов в программах
Проект 1. «Печатающая строка»
1. Запустите Microsoft Visual Basic 2005.
2. Создайте новый проект. Для этого введите команду File-New Project... Выберите тип проекта - Windows Application (Windows-приложение). В окне Name задайте имя проекта – LR9___1.
3. Активизируйте форму Form1 щелчком мыши. В окне Properties (Свойства объекта) выберите свойство Text и присвойте ему значение Печатающая строка.
4. Разместите на форме элемент управления Label1 и кнопку Button1. Свойству Text элемента управления Label1 присвойте значение Программирование, свойству Text элемента управления Button1 присвойте значение Старт:
5. Добавьте на форму элемент управления Timer1. Установите свойство Interval = 50:
6. Дважды щелкните по кнопке Button1 и введите событийную процедуру (включение-выключение таймера):
Private Sub Button1___Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Button1.Text = "Старт" Then
Timer1.Enabled = True
Button1.Text = "Стоп"
Else
Timer1.Enabled = False
Button1.Text = "Старт"
End If
End Sub
7. Добавьте событийную процедуру для таймера:
Private Sub Timer1___Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
' Анимация слева направо
Dim title As String = "Программирование"
Static c As Integer = 0
Label1.Text = title.Substring(0, c)
c += 1
If c = title.Length() + 1 Then c = 0
End Sub
8. Сохраните проект. Проверьте работу приложения.
9. Измените проект так, чтобы строка печаталась справа налево.
Проект 2. «Бегущая строка»
1. Создайте новый проект. Для этого введите команду File-New Project... Выберите тип проекта - Windows Application (Windows-приложение). В окне Name задайте имя проекта – LR9___2.
2. Активизируйте форму Form1 щелчком мыши. В окне Properties (Свойства объекта) выберите свойство Text и присвойте ему значение Бегущая строка.
3. Добавьте на форму элемент управления Timer1. Для элемента управления Timer1 установите свойство Enabled=True (включение таймера):
4. Добавьте событийную процедуру Form1___Load(…). Для этого в поле Class Name в режиме редактирования кода программы установите (Form Events), в поле Method Name – Load, добавьте код событийной процедуры:
Private Sub Form1___Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' Необходимо добавить несколько пробелов, чтобы строки не слипались
Me.Text = "Бегущая строка "
End Sub
5. Добавьте событийную процедуру для таймера:
Private Sub Timer1___Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim StrTemp As String
StrTemp = Me.Text
StrTemp = Microsoft.VisualBasic.Right(StrTemp, Len(StrTemp) - 1) &
Microsoft.VisualBasic.Left(StrTemp, 1)
Me.Text = StrTemp
End Sub
6. Сохраните проект. Проверьте работу приложения.
Проект 3. «Использование узорных и градиентных кистей»
1. Создайте новый проект. Для этого введите команду File-New Project... Выберите тип проекта - Windows Application (Windows-приложение). В окне Name задайте имя проекта – LR9___3.
2. Активизируйте форму Form1 щелчком мыши. В окне Properties (Свойства объекта) выберите свойство Text и присвойте ему значение Использование кистей для текстов:
3. Введите глобальные переменные:
Dim f As Font = New Font("Tahoma", 72)
Dim sBrick As String = "Кирпичики"
Dim sGradient As String = "Градиент"
4. Перед описанием класса Form1 добавьте строку, подключающую требуемую библиотеку:
Imports System.Drawing.Drawing2D
Public Class Form1
…..…………………..
End Class
5. Добавьте событийную процедуру Form1___Paint(…) – рисование формы. Для этого в поле Class Name в режиме редактирования кода программы установите (Form Events), в поле Method Name – Paint:
Private Sub Form1___Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim g As Graphics = e.Graphics
'Создаем кисть с узором кирпича
Dim hbr As New HatchBrush(HatchStyle.HorizontalBrick, ___
Color.White, Color.Tomato)
' Выводим строку, закрашенную кирпичами
g.DrawString(sBrick, f, hbr, 0, 0)
Dim rect As New Rectangle(10, 50, ___
ClientSize.Width, ClientSize.Height)
' Создаем градиентную кисть
Dim lgrb As New LinearGradientBrush(rect, ___
Color.Violet, Color.SkyBlue, ___
LinearGradientMode.BackwardDiagonal)
g.DrawString(sGradient, f, lgrb, 0, 100)
End Sub
6. Сохраните проект. Проверьте работу созданного приложения:
7. Измените тип и размер шрифта, а также цвет текста, например:
Проект 4. «Объемный текст»
1. Создайте новый проект. Для этого введите команду File-New Project... Выберите тип проекта - Windows Application (Windows-приложение). В окне Name задайте имя проекта – LR9___4.
2. Активизируйте форму Form1 щелчком мыши. В окне Properties (Свойства объекта) выберите свойство Text и присвойте ему значение Объемный текст:
3. Добавьте событийную процедуру Form1___Paint(…) – рисование формы, отображение выпуклого текста. Для этого в поле Class Name в режиме редактирования кода программы установите (Form Events), в поле Method Name – Paint:
Private Sub Form1___Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim sb As New SolidBrush(Color.Gray)
Dim f As New Font("Tahoma", 24, FontStyle.Bold)
Dim g As Graphics = e.Graphics
g.DrawString("Программирование", f, sb, 10, 10)
sb.Color = Color.White
g.DrawString("Программирование", f, sb, 8, 8)
End Sub
4. Сохраните проект. Проверьте работу созданного приложения:
5. Разместите на форме кнопку Button1:
6. Дважды щелкните по кнопке Button1 и введите событийную процедуру (отображение вдавленного текста):
Private Sub Button1___Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sb As New SolidBrush(Color.Gray)
Dim f As New Font("Tahoma", 24, FontStyle.Bold)
Dim g As Graphics = CreateGraphics()
g.Clear(BackColor)
g.DrawString("Программирование", f, sb, 10, 10)
sb.Color = Color.White
g.DrawString("Программирование", f, sb, 12, 12)
g.Dispose()
End Sub
7. Сохраните проект. Проверьте работу созданного приложения:
Проект 5. «Контурный текст»
1. Создайте новый проект. Для этого введите команду File-New Project... Выберите тип проекта - Windows Application (Windows-приложение). В окне Name задайте имя проекта – LR9___5.
2. Активизируйте форму Form1 щелчком мыши. В окне Properties (Свойства объекта) выберите свойство Text и присвойте ему значение Контурный текст:
3. Перед описанием класса Form1 добавьте строку, подключающую требуемую библиотеку:
Imports System.Drawing.Drawing2D
Public Class Form1
…..…………………..
End Class
4. Добавьте событийную процедуру Form1___Paint(…) – рисование формы. Для этого в поле Class Name в режиме редактирования кода программы установите (Form Events), в поле Method Name – Paint:
Private Sub Form1___Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
' Создаем траекторию
Dim pth As New GraphicsPath
' Добавляем строку
pth.AddString("Программа", ___
New FontFamily("Tahoma"), ___
0, 50, New Point(20, 30), ___
StringFormat.GenericDefault)
' Создаем синее перо
Dim p As New Pen(Color.Blue, 2)
' Выводим контурный текст
e.Graphics.DrawPath(p, pth)
' Очистим траекторию
pth.Reset()
' Добавляем новый текст
pth.AddString("Программа", ___
New FontFamily("Verdana"), ___
0, 50, New Point(30, 100), ___
StringFormat.GenericTypographic)
' Заливаем траекторию кистью
e.Graphics.FillPath(Brushes.Peru, pth)
' Выводим на экран
e.Graphics.DrawPath(p, pth)
' Освобождаем ресурсы
pth.Dispose()
End Sub
5. Сохраните проект. Проверьте работу созданного приложения:
Проект 6. «Раскаленный текст»
1. Создайте новый проект. Для этого введите команду File-New Project... Выберите тип проекта - Windows Application (Windows-приложение). В окне Name задайте имя проекта – LR9___6.
2. Активизируйте форму Form1 щелчком мыши. В окне Properties (Свойства объекта) выберите свойство Text и присвойте ему значение Раскаленный текст:
3. Перед описанием класса Form1 добавьте строку, подключающую требуемую библиотеку:
Imports System.Drawing.Drawing2D
Public Class Form1
…..…………………..
End Class
4. Добавьте событийную процедуру Form1___Paint(…) – рисование формы. Для этого в поле Class Name в режиме редактирования кода программы установите (Form Events), в поле Method Name – Paint (текст процедуры содержится в рабочей директории в файле Paint.txt):
Private Sub Form1___Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Me.BackColor = Color.Black
' Создадим рисунок в заданной пропорции
Dim bm As New Bitmap(CInt(Me.ClientSize.Width / 5), ___
CInt(Me.ClientSize.Height / 5))
' Создадим объект GraphicsPath
Dim pth As New GraphicsPath
' Добавим строку в заданном стиле
pth.AddString("Электрический эффект", ___
New FontFamily("Tahoma"), ___
CInt(FontStyle.Bold), 48, ___
New Point(10, 20), ___
StringFormat.GenericTypographic)
' Получим объект Graphics
Dim g As Graphics = Graphics.FromImage(bm)
' Создадим матрицу для формирования эффекта
Dim mx As Matrix
mx = New Matrix(1.0F / 5, 0, 0, ___
1.0F / 5, -(1.0F / 5), ___
-(1.0F / 5))
' Выберем режим сглаживания
g.SmoothingMode = SmoothingMode.AntiAlias
' Преобразуем объект Graphics
g.Transform = mx
' Создадим перо
Dim p As New Pen(Color.Tomato, 3)
' Рисуем вокруг созданного пути
g.DrawPath(p, pth)
' и заполняем для лучшего эффекта
g.FillPath(Brushes.Yellow, pth)
' Установим режим сглаживания для контура
g.SmoothingMode = SmoothingMode.AntiAlias
e.Graphics.InterpolationMode = ___
InterpolationMode.HighQualityBicubic
' и расширяем картинку для создания размытости краев
e.Graphics.DrawImage(bm, ClientRectangle, 0, 0, ___
bm.Width, bm.Height, GraphicsUnit.Pixel)
' Перерисовываем оригинальный текст
g.FillPath(Brushes.Black, pth)
' Освобождаем ресурсы
g.Dispose()
pth.Dispose()
End Sub
5. Сохраните проект. Проверьте работу созданного приложения:
Проект 7. «Тексты с поворотами»
1. Создайте новый проект. Для этого введите команду File-New Project... Выберите тип проекта - Windows Application (Windows-приложение). В окне Name задайте имя проекта – LR9___7.
2. Активизируйте форму Form1 щелчком мыши. В окне Properties (Свойства объекта) выберите свойство Text и присвойте ему значение Повороты текста.
3. Разместите на форме три кнопки Button1, Button2, Button3. Измените свойство Text в соответствии с рисунком:
4. Перед описанием класса Form1 добавьте строку, подключающую требуемую библиотеку:
Imports System.Drawing.Drawing2D
Public Class Form1
…..…………………..
End Class
5. Введите глобальные переменные:
Dim f As New Font("Tahoma", 20, FontStyle.Italic)
Dim g As Graphics = CreateGraphics()
6. Дважды щелкните по кнопке Button1 (Зеркальный поворот) и введите событийную процедуру:
Private Sub Button1___Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
g = CreateGraphics()
'Разворачиваем текст на 180 градусов
g.RotateTransform(180)
g.DrawString("Программирование", ___
f, Brushes.Green, ___
-Width / 1 + 10, -Height / 2)
g.Dispose()
End Sub
7. Сохраните проект. Проверьте работу созданного приложения:
8. Дважды щелкните по кнопке Button2 (Поворот на 30 градусов) и введите событийную процедуру:
Private Sub Button2___Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
g = CreateGraphics()
' Перемещаемся в заданную точку отсчета
g.TranslateTransform(30, 30)
'Поворачиваем на 30 градусов
g.RotateTransform(30)
' И выводим текст под заданным углом
g.DrawString("Текст под углом", f, Brushes.Red, 0, 0)
'Восстанавливаем преобразование
g.ResetTransform()
g.Dispose()
End Sub
9. Сохраните проект. Проверьте работу созданного приложения:
10. Дважды щелкните по кнопке Button3 (Солнышко) и введите событийную процедуру:
Private Sub Button3___Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
g = CreateGraphics()
' Очистим форму
g.Clear(BackColor)
'Находим центр формы
Dim cx As Integer = ClientSize.Width \ 2
Dim cy As Integer = ClientSize.Height \ 2
' Перемещаемся в заданную точку отсчета
g.TranslateTransform(cx, cy)
g.FillEllipse(Brushes.Yellow, -45, -45, 90, 90)
Dim i As Integer
For i = 0 To 359 Step 15
g.DrawString("Солнышко", f, Brushes.Yellow, 50, 0)
'Поворачиваем на 30 градусов
g.RotateTransform(20)
Next
'Восстанавливаем преобразование
g.ResetTransform()
g.Dispose()
End Sub
11. Сохраните проект. Проверьте работу созданного приложения:
Вариант
Создать проект, в котором текст заголовка формы печатается слева направо:
Вид формы при запуске:
Нажатие на кнопку Старт:
Код событийной процедуры нажатия на кнопку Старт/Стоп, выполняющей включение/выключение таймера:
Private Sub Button1___Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Button1.Text = "Старт" Then
Timer1.Enabled = True
Button1.Text = "Стоп"
Else
___
Button1.Text = "Старт"
End If
End Sub
Введите пропущенный оператор (без пробелов, прописными буквами).
Код событийной процедуры, печатающей текст в заголовке формы слева направо:
Private Sub Timer1___Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim title As String = "Печатающая строка"
Static c As Integer = 0
Me.Text = title.Substring(0, c)
c += 1
If c = title.Length() + 1 Then ___
End Sub
Введите пропущенное выражение (без пробелов, прописными буквами).
Программирование анимационного эффекта печатающей строки происходит в событийной процедуре Timer1______ (введите пропущенное значение без пробелов, прописными буквами).
Программный код, выполняющий добавление анимированной строки в заголовок формы:
Dim title As String = "Печатающая строка"
Static c As Integer = 0
Me.___ = title.Substring(0, c)
Введите пропущенное выражение (без пробелов, прописными буквами).
Вариант
Создать проект, в котором текст на кнопке печатается справа налево:
Вид формы при запуске:
Нажатие на кнопку Старт:
Код событийной процедуры нажатия на кнопку Старт/Стоп, выполняющей включение/выключение таймера:
Private Sub Button1___Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Button1.Text = "Старт" Then
___
Button1.Text = "Стоп"
Else
Timer1.Enabled = False
Button1.Text = "Старт"
End If
End Sub
Введите пропущенный оператор (без пробелов, прописными буквами).
Код событийной процедуры, печатающей текст на кнопке справа налево:
Private Sub Timer1___Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim title As String = "Кнопка"
Static i As Integer = title.Length()
Button2.Text = title.Substring(0, i)
i -= 1
If i = -1 Then ___
End Sub
Введите пропущенное выражение (без пробелов, прописными буквами).
Программирование анимационного эффекта печатающей строки происходит в событийной процедуре Timer1______ (введите пропущенное значение без пробелов, прописными буквами).
Программный код, выполняющий добавление анимированной строки на кнопку:
Dim title As String = "Кнопка"
Static i As Integer = title.Length()
Button2.Text =___.Substring(0, i)
Введите пропущенное выражение (без пробелов, прописными буквами).
Вариант
Создать проект, главная форма которого при запуске выглядит следующим образом:
Параметры текста: градиентная заливка, шрифт - Arial, размер шрифта – 36.
Код событийной процедуры, создающей главную форму приложения:
Private Sub Form1___Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim f As Font = New Font("Arial", 36)
Dim g As Graphics = e.Graphics
Dim rect As New Rectangle(10, 20, ClientSize.Width, ClientSize.Height)
Dim lgrb As New LinearGradientBrush(rect, Color.Gray, Color.Violet, ___
LinearGradientMode.Horizontal)
___("Информационные", f, lgrb, 10, 10)
___("технологии", f, lgrb, 90, 90)
End Sub
Введите пропущенное выражение (без пробелов, прописными буквами).
Программирование анимационного эффекта текста с градиентной заливкой происходит в событийной процедуре Form1______ (введите пропущенное значение без пробелов, прописными буквами).
Программный код, выполняющий объявление градиентной кисти:
Dim rect As New Rectangle(10, 20, ClientSize.Width, ClientSize.Height)
Dim lgrb As New ___(rect, Color.Gray, Color.Violet, ___
LinearGradientMode.Horizontal)
Введите пропущенное значение (без пробелов, прописными буквами).
Программный код, выполняющий объявление используемого шрифта:
Dim f As Font = New Font("Arial", ___)
Введите пропущенное выражение (без пробелов, прописными буквами).
Вариант
Создать проект, главная форма которого при запуске выглядит следующим образом:
Параметры текста: объемный выпуклый, шрифт - Tahoma, размер шрифта - 36, полужирный.
Код событийной процедуры, создающей главную форму приложения:
Private Sub Form1___Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim sb As New SolidBrush(Color.Gray)
Dim f As New Font("Tahoma", 36, FontStyle.Bold)
Dim g As Graphics = e.Graphics
___("Информационные", f, sb, 10, 10)
sb.Color = Color.Violet
___("Информационные", f, sb, 7, 7)
sb.Color = Color.Gray
___("технологии", f, sb, 90, 90)
sb.Color = Color.Violet
___("технологии", f, sb, 93, 93)
g.Dispose()
End Sub
Введите пропущенное выражение (без пробелов, прописными буквами).
Программирование анимационного эффекта объемного текста происходит в событийной процедуре Form1______ (введите пропущенное значение без пробелов, прописными буквами).
Программный код, выполняющий объявление используемого шрифта:
Dim f As New Font("___", 36, FontStyle.Bold)
Введите пропущенное выражение (без пробелов, прописными буквами).
Программный код, выполняющий объявление кисти заданного цвета:
Dim sb As New ___(Color.Gray)
Введите пропущенное значение (без пробелов, прописными буквами).
Вариант
Создать проект, главная форма которого при запуске выглядит следующим образом:
Параметры текста: узор кирпича, шрифт - Arial, размер шрифта – 36.
Код событийной процедуры, создающей главную форму приложения:
Private Sub Form1___Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim f As Font = New Font("Arial", 36)
Dim g As Graphics = e.Graphics
Dim hbr As New HatchBrush(HatchStyle.SmallGrid, Color.White, Color.Blue)
___("Информационные", f, hbr, 10, 10)
___("технологии", f, hbr, 90, 90)
End Sub
Введите пропущенное выражение (без пробелов, прописными буквами).
Программирование анимационного эффекта текста с узором кирпича происходит в событийной процедуре Form1______ (введите пропущенное значение без пробелов, прописными буквами).
Программный код, выполняющий объявление используемого шрифта:
Dim f As Font = New Font("___", 36)
Введите пропущенное выражение (без пробелов, прописными буквами).
Программный код, выполняющий объявление кисти с узором кирпича:
Dim hbr As New ___(HatchStyle.SmallGrid, Color.White, Color.Blue)
Введите пропущенное значение (без пробелов, прописными буквами).
Интегрированная среда разработки Microsoft Visual Basic 2005. Работа с текстами и строками. Текстовые эффекты.
Строка состоит из отдельных элементов – символов. Можно, используя возможности таймера, выводить требуемую строку не целиком, а по мере надобности. Таким образом, получаются анимационные эффекты печатающей строки, бегущей строки и т.д.
Пример реализации печатающей строки:
Private Sub Button1___Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Button1.Text = "Старт" Then
Timer1.Enabled = True
Button1.Text = "Стоп"
Else
Timer1.Enabled = False
Button1.Text = "Старт"
End If
End Sub
Private Sub Timer1___Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
' Анимация слева направо
Dim title As String = "Занимательное программирование"
Static c As Integer = 0
Label1.Text = title.Substring(0, c)
Me.Text = title.Substring(0, c)
c += 1
If c = title.Length() + 1 Then c = 0
' Анимация справа налево
Dim title2 As String = "Кнопка"
Static i As Integer = title2.Length()
Button2.Text = title2.Substring(0, i)
i - = 1
If i = -1 Then i = title2.Length()
End Sub
Кнопка с надписью Старт запускает таймер, при этом надпись Старт меняется на Стоп. При повторном нажатии надпись Стоп заменяется обратно на Старт. При этом происходит включение и выключение таймера. Вся работа по созданию эффекта происходит в событии таймера Tick. Статическая переменная c служит счетчиком. С помощью метода Substring класса String выполняется наращивание строки, начиная с первого символа и заканчивая последним. После чего счетчик обнуляется, и все повторяется заново. Можно в любой момент прервать анимацию строки, а повторным нажатием на кнопку возобновить вывод строки с остановленной позиции. Анимированную строку можно добавить в заголовок формы:
Me.Text = title.Substring(0, c)
Для того чтобы текст не наращивать, а уменьшать, необходимо создать еще один счетчик i. Начальное значение счетчика равно длине заданной строки. При каждом срабатывании таймера будет вычитаться один символ из строки. При достижении счетчиком значения 0 счетчику снова присваивается значение длины строки.
Пример реализации бегущей строки (бегущая строка используется на электронных табло, где периодически повторяется одно и то же рекламное сообщение):
Private Sub Form1___Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' Необходимо добавить несколько пробелов,
'чтобы строки не слипались
Me.Text = "Занимательное программирование "
End Sub
Private Sub Timer1___Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim StrTemp As String
StrTemp = Me.Text
StrTemp = Microsoft.VisualBasic.Right(StrTemp, Len(StrTemp) - 1) &
Microsoft.VisualBasic.Left(StrTemp, 1)
Me.Text = StrTemp
End Sub
Для реализации бегущей строки также используется элемент управления – таймер. Первый символ строки отбрасывается и добавляется в конец строки. Чтобы сформировать пространство между бегущими строками, необходимо добавить в выводимый текст несколько пробелов.
Строки можно рассматривать не только как набор символов, но и как графические объекты. В этом случае можно разукрасить буквы разными цветами, задать градиентную заливку, вращать буквы вокруг своей оси или вдоль какой-нибудь кривой и т.д.
Пример использования узорной кисти:
Dim f As Font = New Font("Tahoma", 72)
Dim sBrick As String = "Кирпичики"
Dim g As Graphics = e.Graphics
'Создаем кисть с узором кирпича
Dim hbr As New HatchBrush(HatchStyle.HorizontalBrick, Color.White, Color.Tomato)
'Выводим строку, закрашенную кирпичами
g.DrawString(sBrick, f, hbr, 0, 0)
Пример использования градиентной кисти:
Dim sGradient As String = "Градиент"
Dim f As Font = New Font("Tahoma", 72)
Dim g As Graphics = e.Graphics
Dim rect As New Rectangle(10, 50, ClientSize.Width, ClientSize.Height)
' Создаем градиентную кисть
Dim lgrb As New LinearGradientBrush(rect, Color.Violet, Color.SkyBlue, ___
LinearGradientMode.BackwardDiagonal)
g.DrawString(sGradient, f, lgrb, 0, 100)
Текстам, которые выводятся на форму, можно придать объемность. Существует два эффекта объемности – выпуклый и вдавленный вид. Достигаются подобные эффекты простым смещением заданного текста с другим цветом, имитирующим тень.
Для реализации эффекта выпуклости используются два вызова метода DrawString. При первом вызове метода на форме рисуется заданная строка выбранным цветом, при втором вызове – строка другим цветом (имитация тени) со смещением в 1 или 2 пиксела.
Пример создания выпуклого текста:
Dim sb As New SolidBrush(Color.Gray)
Dim f As New Font("Tahoma", 24, FontStyle.Bold)
Dim g As Graphics = e.Graphics
g.DrawString("Программирование", f, sb, 10, 10)
sb.Color = Color.White
g.DrawString("Программирование", f, sb, 8, 8)
Для эффекта вдавленного текста необходимо сместить вторую строку ниже первой.
Пример создания вдавленного текста:
Dim sb As New SolidBrush(Color.Gray)
Dim f As New Font("Tahoma", 24, FontStyle.Bold)
Dim g As Graphics = CreateGraphics()
g.Clear(BackColor)
g.DrawString("Программирование", f, sb, 10, 10)
sb.Color = Color.White
g.DrawString("Программирование", f, sb, 12, 12)
Текст, выводимый на экран, по умолчанию заполнен каким-то цветом. Но если необходимо вывести только контур символов, можно воспользоваться методом DrawPath. Данный метод позволяет создавать различные контуры из фигур и текстов.
Пример создания контурного текста:
'Создаем траекторию
Dim pth As New GraphicsPath
'Добавляем строку
pth.AddString("Программа", New FontFamily("Tahoma"), ___
0, 50, New Point(20, 30), StringFormat.GenericDefault)
'Создаем синее перо
Dim p As New Pen(Color.Blue, 2)
'Выводим контурный текст
e.Graphics.DrawPath(p, pth)
Способ создания раскаленного текста напоминает методику создания объемности. Чтобы создать ореол вокруг текста, используется свойство InterpolationMode, которое позволяет установить режим размытости текста. Техника создания эффекта ореола основана на двойном наложении текста. Сначала создается уменьшенная копия рисунка, которая будет растянута с применением режима интерполяции. Необходимо установить некоторый коэффициент сжатия картинки. Сначала формируется картинка в заданной пропорции. Затем создается траектория и устанавливается желаемый текст. После этого формируется объект Graphics из графического объекта PictureBox и создается матрица, которая сжимает картинку. Траектория заполняется желаемым цветом с помощью пера, и для лучшего эффекта заливается выбранной кистью. Рисунок растягивается для получения эффекта нечеткости (размытости). Затем выводится заданный текст, чтобы окончательно сформировать эффект.
Методы класса Graphics предоставляют широкие возможности для работы с текстами. Можно повернуть текст на любой угол, отразить зеркально по горизонтали или вертикально, наклонить символы.
Пример поворота текста на 180 градусов:
Dim f As New Font("Tahoma", 20, FontStyle.Italic)
Dim g As Graphics = CreateGraphics()
g = CreateGraphics()
'Разворачиваем текст на 180 градусов
g.RotateTransform(180)
g.DrawString("Программирование", f, Brushes.Green, -Width / 1 + 10, -Height / 2)
Для поворота текста необходимо задать требуемое значение угла при помощи метода RotateTransform. Можно использовать не только положительные, но и отрицательные значения. Вызов метода RotateTransform со значением –10 выполняет поворот против часовой стрелки.
1234.03.01;ЭПТ2.03;1
Цель:
изучение системы программирования Microsoft Visual Basic 2005.
Результаты обучения:
После успешного завершения занятия пользователь должен уметь:
· создавать печатающие и бегущие строки;
· программировать различные текстовые эффекты.
Список рекомендуемой литературы:
1. Степанов А., Шевякова Д. Самоучитель Visual Basic 2005. – СПб.: BHV, 2006.
2. Богданов М.Р. Visual Basic 2005 на примерах. – СПб.: BHV, 2007.
3. Патрик Т., Крейг К. Visual Basic 2005: рецепты программирования. – СПб.: BHV, 2008.
4. Балена Ф. Программирование на Microsoft Visual Basic 2005. – М.: «Эком», 2008.
Используемые программы:
Microsoft Visual Basic 2005 Express Edition
Используемые файлы:
Paint.txt
Microsoft Visual Basic 2005 Express Edition — средство разработки программного обеспечения, включающее язык программирования и среду разработки. Данный продукт предназначен для создания небольших Windows-приложений на основе технологии Windows Forms, являющейся частью Microsoft .NET. С помощью Visual Basic 2005 Express Edition можно создавать консольные приложения и компоненты.
Тестирование
В Microsoft Visual Basic 2005 Express Edition для вывода строки текста, как графического объекта, используется метод
В Microsoft Visual Basic 2005 Express Edition для поворота текста используется метод
В Microsoft Visual Basic 2005 Express Edition для создания различных контуров из фигур и текстов используется метод
В Microsoft Visual Basic 2005 Express Edition программирование анимационных эффектов печатающей строки, бегущей строки происходит в событии таймера
Получить анимационные эффекты печатающей строки, бегущей строки можно с помощью элемента управления -