Волченков Проектирование Wиндоwс-Приложений на языке Висуал Басиц 2010
.pdfPrivate Sub Увеличенное_Click(ByVal sender _ As System.Object, _
ByVal e As System.EventArgs) _ Handles Увеличенное.Click
k = InputBox("Введите значение k", _
"Ввод коэффициента увеличения", 1.5) Me.Width = w0 + (k - 1) * w
Me.Height = h0 + (k - 1) * h
PictureBox2.Width = k * (w + 1)
PictureBox2.Height = k * (h + 1) For y = 0 To h
For x = 0 To w
Page2.SetPixel(x, y, c(x, y))
Next
Next
MsgBox("На Page2 - копия Page1") p = "увеличенное"
End Sub
Private Sub Уменьшенное_Click(ByVal sender _ As System.Object, _
ByVal e As System.EventArgs) _ Handles Уменьшенное.Click
k = InputBox("Введите значение k", _
"Ввод коэффициента уменьшения", 0.5) PictureBox2.Width = k * (w + 1) PictureBox2.Height = k * (h + 1)
For y = 0 To h For x = 0 To w
Page2.SetPixel(x, y, c(x, y))
Next
Next
MsgBox("На Page2 - копия Page1") p = "уменьшенное"
End Sub
Private Sub Нарисовать_Click(ByVal sender _ As System.Object, _
ByVal e As System.EventArgs) _ Handles Нарисовать.Click
Select Case p
Case "негативное", "черно-белое" gr = PictureBox2.CreateGraphics
|
91 |
gr.Clear(PictureBox2.BackColor) For y = 0 To h
For x = 0 To w
cp = Page2.GetPixel(x, y) Dim br As New SolidBrush(cp)
gr.FillRectangle(br, x, y, 1, 1)
Next
Next
Case "увеличенное", "уменьшенное" gr = PictureBox2.CreateGraphics gr.Clear(PictureBox2.BackColor) For y = 0 To h
For x = 0 To w
cp = Page2.GetPixel(x, y) Dim br As New SolidBrush(cp) gr.FillRectangle(br, _
k * x, k * y, k, k) Next
Next End Select
Нарисовать.Enabled = False
ОбработатьИзображение.Enabled = True End Sub
Пример результата работы процедур построения негативного изображения (команда подменю Негативное) и рисования полученного результата (команда меню Нарисовать) показан на рис. 6.6.
Примеры результата работы процедур построения увеличенного и уменьшенного изображения (команды подменю Увеличенное и Уменьшенное) и рисования полученного результата (команда меню Нарисовать) показаны на рис. 6.8 и 6.9.
Варианты задания 6.3.
Вариант 1. Написать процедуру команды Слева-направо – 3-й команды подменю, показанного на рис. 6.6.
Вариант 2. Написать процедуру команды Сверху-вниз – 4-й команды подменю, показанного на рис. 6.6.
|
92 |
Рис. 6.8. Окно приложения после построения увеличенного изображения и рисования результата
Рис. 6.9. Окно приложения после построения уменьшенного изображения и рисования результата
93
Изображения, которые должны получиться в результате работы процедур варианта 1 и варианта 2, показаны на рис. 6.10.
Рис. 6.10. Результат преобразования «слева-направо» и «сверху-вниз»
Указания.
1. В обоих вариантах необходимо внести необходимые коррективы в процедуру для команды меню Нарисовать – учесть новые значения переменной p.
2. Использовать следующие «заготовки» для процедур:
Private Sub СлеваНаправо_Click(ByVal sender _ As System.Object, _
ByVal e As System.EventArgs) _ Handles СлеваНаправо.Click
<Строки процедуры Варианта 1>
MsgBox("Зеркальное (слева-направо) - на Page2") p = "слева-направо"
End Sub
Private Sub СверхуВниз_Click(ByVal sender _ As System.Object, _
ByVal e As System.EventArgs) _ Handles СверхуВниз.Click
<Строки процедуры Варианта 2>
MsgBox("Зеркальное (сверху-вниз) - на Page2") p = "сверху-вниз"
End Sub
94
Отчет о работе
Отчет заключается в демонстрации студентом на терминале работы трёх самостоятельно отлаженных проектов: «Сортировка массива», «Быстрый поиск в отсортированном массиве методом дихотомии» и «Обработка изображения как двумерного массива пикселей». Проекты должны давать ожидаемые результаты при работе в режиме отладчика.
Должна быть также представлена демонстрация исполняемых Windows приложений, соответствующих трём указанным проектам.
95
Список рекомендуемой литературы
1.Лукин С.Н. Понятно о Visual Basic .NET. Самоучитель. М.: ДИА- ЛОГ-МИФИ, 2005.
2.Хальворсон М. Visual Basic .NET. Русская версия. Серия «Шаг за шагом». Практ. пособие. М.: СП ЭКОМ, 2004.
3.Богданов М.Р. Visual Basic 2005 на примерах. СПб.: БХВПетербург, 2007.
96