Разработка программы «Графический редактор»
В данном программном комплексе будет задействован набор инструментов, который включает в себя такие инструменты как: карандаш, кисть, распылитель, заливка, линия, эллипс, прямоугольник, текст и выделение области. Так же будет иметься палитра для изменения цвета используемого инструмента. Будет предоставлена возможность вырезать, скопировать и вставлять изображение, изменять размер изображения… Читать ещё >
Разработка программы «Графический редактор» (реферат, курсовая, диплом, контрольная)
Міністерство освіти і науки, молоді і спорту України Донецький національний університет Кафедра КОМП’ЮТЕРНИХ технологій Курсова робота Тема: «Розробка програми «Графічний редактор»
Виконавець:
студент 2-го курсу кафедри КТ Сухомлин Євген Валерійович Керівник: ст. викладач Котенко В.М.
Донецьк 2012
Міністерство освіти і науки, молоді і спорту України Донецький національний університет Кафедра комп’ютерних технологій Затверджую Зав. Кафедрою
________________
підпис
__________________
дата
Завдання
На курсову роботу студента 2 курсу Сухомлина Євгена Валерійовича
Спеціалізація Адміністрування комп’ютерних систем
Тема дипломної роботи Розробка програми «Графічний редактор»
Вид роботи — прикладна
Коротка постановка задачі. 1. Визначити структуру програми 2. Розробити і реалізувати засобами системи Visual Basic програмний комплекс з відкриття, загрузки, збереження, печаті та редагування зображень Вхідні дані. 1. Завдання з написання програмного комплексу 2. Опис середовища розробки додатків Visual Basic.
Очікувані результати: Програмний комплекс з відкриття, загрузки, збереження, печаті та редагування зображень
Календарний план роботи
Дата проведення консультації | Етап виконання роботи | Оцінка про виконання | |
09.02.2012 | Вивчення літератури | Виконано | |
20.02.2012 | Проектування програмного комплексу | Виконано | |
15.04.2012 | Програмна реалізація алгоритму системи | Виконано | |
01.05.2012 | Тестування і налагодження системи | Виконано | |
03.05.2012 | Написання звіту з дипломної роботи | Виконано | |
10.05.2012 | Захист дипломної роботи | ||
Оцінка дипломної роботи (виставляється керівником до захисту)_____
Дата видачі завдання 07.02.2012 р.
Керівник ст. викладач Котенко В.М.______________________________
Студент (підпис)______________________________________________
Реферат
Звіт про роботу: 58 с., 14 мал., 2 додатка, 3 джерела.
Об'єкт дослідження — графічний редактор.
Ціль роботи — розробка графічного редактора з використанням Visual Basic.
Метод дослідження — аналіз можливостей системи розробки додатків Visual Basic для cтворення й обробки графічних об'єктів.
У роботі були використані засоби Visual Basic для створення й обробки графічних зображень.
У курсовій роботі був розроблений програмний комплекс для графічних зображень, який дозволяє: продивлятися, додавати та редагувати зображення.
Програмний комплекс для створення та редагування графічних зображень може бути використаний дизайнерами для побудови графічних проектів.
VISUAL BASIC, ГРАФІЧНИЙ РЕДАКТОР, ЗОБРАЖЕННЯ
1. Постановка задачи
2. Среда разработки приложений Microsoft Visual Basic
3. Программа «Графический редактор»
3.1 Структура программного комплекса
3.2 Описание объектов и их взаимодействия
3.3 Аппаратные и программные средства создания и эксплуатации программного комплекса
3.4 Руководство пользователя
3.5 Описание контрольного примера Выводы Список ссылок Приложения
Актуальность данного программного комплекса заключается в том, что в данное время очень многие люди пользуются графическими редакторами для различных нужд. Так же актуальность обусловлена тем, что каждый, студент, преподаватель, человек в нашем обществе должен владеть компьютерными знаниями на довольно таки высоком уровне. В эти знания так же входят знания по работе с графическими редакторами.
На сегодняшнее время графический редактор должен обладать несколькими важными свойствами. Он должен иметь довольно таки немалый набор инструментов для работы с графическими файлами. Так же должен иметься набор инструментов, которые позволяют вырезать, копировать и вставлять изображения, а так же изменять их размер и печатать их на листе бумаги.
В данном программном комплексе будет задействован набор инструментов, который включает в себя такие инструменты как: карандаш, кисть, распылитель, заливка, линия, эллипс, прямоугольник, текст и выделение области. Так же будет иметься палитра для изменения цвета используемого инструмента. Будет предоставлена возможность вырезать, скопировать и вставлять изображение, изменять размер изображения и распечатывать его.
1. Постановка задачи
Разработать программный комплекс на Visual Basic по работе с изображениями.
Программный комплекс должен выполнять следующие действия:
1.Создавать пустой файл, в котором бы производились различные действия со следующими графическими инструментами: карандаш, ластик, распылитель, заливка, эллипс, прямоугольник, линия, текст.
2.Загружать рисунок, фотографию или другой графический объект с диска
3.Сохранять графический файл после редактирования на диск
4.Выполнять действия: Копировать, Вставить, Вырезать.
5.Осуществлять печать изображения.
6.Выполнять очистку рабочего пространства и изменение размера изображения.
2. Среда разработки приложений Microsoft Visual Basic
Microsoft Visual Basic — средство разработки программного обеспечения, разрабатываемое корпорацией Microsoft и включающее язык программирования и среду разработки. Язык Visual Basic унаследовал дух, стиль и отчасти синтаксис своего предка — языка Бейсик, у которого есть немало диалектов. В то же время Visual Basic сочетает в себе процедуры и элементы объектно-ориентированных и компонентно-ориентированных языков программирования. Среда разработки VB включает инструменты для визуального конструирования пользовательского интерфейса.
Visual Basic считается хорошим средством быстрой разработки прототипов программы, для разработки приложений баз данных и вообще для компонентного способа создания программ, работающих под управлением операционных систем семейства Microsoft Windows.
Первое признание серьёзными разработчиками Visual Basic получил после выхода версии 3 — VB3. Окончательное признание как полноценного средства программирования для Windows — при выходе версии 5 — VB5. Версия VB6, входящая в состав Microsoft Visual Studio 6.0, стала по-настоящему зрелым и функционально богатым продуктом. После этого разработчики из Microsoft существенно изменили направление развития данной технологии.
Visual Basic.NET не позволяет программировать по-старому, ибо по сути является совершенно другим языком, таким же, как и любой другой язык программирования для платформы.NET. Индивидуальность языка, так же как и его преимущества (простота, скорость создания программ, лёгкость использования готовых компонент) при использовании в среде.NET не имеют такого значения, как раньше — всё сосредоточено на возможностях самой системы.NET, на её библиотеке классов. Поэтому сегодня нужно говорить о классическом Visual Basic, его диалектах Visual Basic for Applications (VBA) и Visual Basic Scripting Edition (VBScript) и о языке для платформы.NET — Visual Basic.NET. [1]
Достоинства
1.Высокая скорость создания приложений с графическим интерфейсом для MS Windows.
2.Простой синтаксис, позволяющий очень быстро освоить язык.
3.Возможность компиляции как в машинный код, так и в P-код (по выбору программиста). В режиме отладки программа всегда (вне зависимости от выбора) компилируется в P-код, что позволяет приостанавливать выполнение программы, вносить значительные изменения в исходный код, а затем продолжать выполнение: полная перекомпиляция и перезапуск программы при этом не требуется.
Защита от ошибок, связанных с применением указателей и доступом к памяти. Этот аспект делает Visual Basic приложения более стабильными, но также является объектом критики.
Возможность использования большинства WinAPI функций для расширения функциональных возможностей приложения. Данный вопрос наиболее полно исследован Дэном Эпплманом, написавшим книгу «Visual Basic Programmer’s Guide to the Win32 API».
Недостатки
Поддержка операционных систем только семейства Windows и Mac OS X (Исключение — VB1 for DOS).
Отсутствие механизма наследования реализации объектов. Существующее в языке наследование позволяет наследовать только интерфейсы, но не их реализацию.
Требует установленную msvbvmXX. dll для работы программы.
Низкая скорость работы, обусловленная тем, что практически все встроенные функции языка реализованы через библиотеку времени исполнения (runtime library), которая, в свою очередь, производит много «лишней» работы по проверке и/или преобразованию типов.
Часто критике подвергаются такие аспекты Visual Basic, как возможность отключить средства слежения за объявленными переменными, возможность неявного преобразования переменных, наличие типа данных «Variant». По мнению критиков, это даёт возможность писать крайне плохой код. С другой стороны, это можно рассматривать как плюс, так как VB не навязывает «хороший стиль», а даёт больше свободы программисту.
Отсутствие указателей, низкоуровневого доступа к памяти, ASM-вставок. Несмотря на то, что парадигма Visual Basic позволяет среднему VB-программисту обходиться без всего этого, перечисленные вещи также нередко становятся объектами критики. И хотя, используя недокументированные возможности и определённые ухищрения, всё это можно реализовать и на VB (например с помощью функций для получения указателей VarPtr (), StrPtr () и ObjPtr ()); пользоваться этими трюками гораздо сложнее, чем, например, на Си++.
Однако стоит отметить, что все недостатки языка вытекают из его основного достоинства — простоты разработки графического интерфейса. Поэтому многие программисты используют Visual Basic для разработки интерфейса пользователя, а функциональность программы реализуют в виде динамически подключаемых библиотек (DLL), написанных на другом языке (чаще всего C++). 3]
3. Программа «Графический редактор»
3.1 Структура программного комплекса
Программный комплекс состоит из:
1. файла проекта Project1. vbp
2. файла Form1. frm
3. файла Form1. log
4. файла Form1. frx
5. файла Form2. frm
6. файла Project1. vbw
3.2 Описание объектов и их взаимодействия
Проект программы Project1. vbp включает в себя файлы Form1. frm и Form2.frm. В них содержится набор функций и процедур, посредством которых осуществляется работа программного комплекса.
Основные объекты проекта такие:
Form1-контейнер содержащий все остальные компоненты приложения Меню которое содержит вкладки: Файл-Создать-Открыть-Сохранить-Печать-Выход; Правка-Вырезать-Копировать-Вставить; Изображение-Размер-Очистить;
Option1(0) — кнопка для выделения определенной области
Option1(1) — кнопка для выбора инструмента Резинка
Option1(2) — кнопка для выбора инструмента Заливка
Option1(3) — кнопка для выбора инструмента Палитра
Option1(4) — кнопка для выбора инструмента Карандаш
Option1(5) — кнопка для выбора инструмента Распылитель
Option1(6) — кнопка для выбора инструмента Текст
Option1(7)-кнопка для выбора инструмента Линия
Option1(8) — кнопка для выбора инструмента Прямоугольник
Option1(9)-кнопка для выбора инструмента Эллипс
PictureBox4- выбор линий или толщины используемого инструмента
Picturebox5(0−4) — толщина используемого инструмента
Picturebox6(0−14) — палитра с цветами для инструментов
Timer1- таймер для программы
TextBox1- текстовое окно для считывания текста в рисунке
PictureBox9- окно для считывания изображения в программе Объявляем функции Ellipse и ExtFloodFill из библиотеки gdi32
Параметрами функции Ellipse служат координаты левого верхнего и правого нижнего угла прямоугольника, в который вписан эллипс
Private Declare Function Ellipse Lib «gdi32» (ByVal hdc As Long, ByVal x1 As Long, ByVal y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Параметрами функции ExtFloodFill служат координаты точки внутри закрашиваемой области, цвет заливки и тип заливки
Private Declare Function ExtFloodFill Lib «gdi32» (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long, ByVal wFillType As Long) As Long
Опишем переменные нашей программы
Для хранения десятичных чисел с плавающей точкой предназначены типы данных single и Double. Переменная с типом данных single занимает 4 байта и может принимать значения в диапазоне -3,438… -1,4^-45 для отрицательных чисел и 1,4^-45… 3,438 для положительных чисел.
Переменные x0, y0,x1,y1 используются для задания координат графических объектов
Dim x0 As Single, y0 As Single
Dim x1 As Single, y1 As Single
Переменная булевского типа, определяющая рисуется картинка впервые или нет
Dim picDrawFirst As Boolean
Переменная picDrawWidth целого типа определяет толщину линии. Изначально' устанавливается в единицу
Dim picDrawWidth As Integer
Переменная булевского типа, определяющая нажата ли мышка на изображении
Dim picMouseDown As Boolean
Опишем процедуры нашей программы
Процедура вызывается Form Load() при загрузке формы (запуске программы)
Private Sub Form_Load ()
Dim i As Integer
Задает фоновый цвет объектам Picture6(0)-Picture6(15) типа PictureBox
For i = 0 To 15
Picture6(i).BackColor = QBColor (i)
Next
PictureRedraw (0)
Устанавливает в единицу ширину контура изображения
picDrawWidth = 1
Устанавливает изображение курсора мышки в изображение Image5 — карандаш
Picture1.MouseIcon = Image5
устанавливает по умолчанию маску выбираемых из папки файлов в формат bmp
CommonDialog1.Filter = «*.bmp|*.bmp»
End Sub
Процедура Picture Redraw() реализует меню выбора толщины линии Выбранную линию выделяем одним цветом, остальные другим
Private Sub Picture Redraw (Index As Integer)
Dim i As Integer
Цикл по 5 типам линий
For i = 0 To 4
Если выбранная линия, то выделяем ее
If i = Index Then
Picture5(i).BackColor = vbHighlight
Picture5(i).ForeColor = vbHighlightText
Else
иначе задаем черную линию на сером фоне
Picture5(i).BackColor = vbButtonFace
Picture5(i).ForeColor = vbButtonText
End If
рисуем саму линию
Picture5(i).Line (0, 4)-(41, 4)
Next
End Sub
Процедура Sub Option1_Click устанавливает вид курсора мыши в зависимости от нажатой кнопки графического меню
Private Sub Option1_Click (Index As Integer)
Select Case Index
Case 1
Picture1.MouseIcon = Image2
Case 2
Picture1.MouseIcon = Image3
Case 3
Picture1.MouseIcon = Image4
Case 4
Picture1.MouseIcon = Image5
Case 5
Picture1.MouseIcon = Image6
Case 0, 6 To 9
Picture1.MouseIcon = Image7
End Select
Если окна для вставки текста или картинки видимы, то убираем их, используя соответствующие процедуры TextExit и PictureExit
If Text1. Visible = True Then TextExit
If Picture9. Visible = True Then PictureExit
End Sub
Процедура Private Sub TextExit () переносит текст из текстового поля в рисунок и скрывает это поле
Private Sub TextExit ()
Text1.Visible = False
Set Picture1. Font = Text1. Font
Picture1.CurrentX = Text1. Left + 2
Picture1.CurrentY = Text1. Top + 2
Picture1.ForeColor = Picture8(1).BackColor
Picture1.Print Text1. Text
End Sub
Процедура PictureExit () переносит рисунок из графического окна в основной рисунок и скрывает это окно
Private Sub PictureExit ()
Picture9.Visible = False
Picture1.PaintPicture Picture9. image, Picture9. Left + 1, _
Picture9.Top + 1, Picture9. Width — 2, Picture9. Height — 2, _
0, 0, Picture9. Width — 2, Picture9. Height — 2
End Sub
Процедура Picture1_MouseDown определяет набор действий при нажатии на кнопку мыши
Private Sub Picture1_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)
Если окна для вставки текста или картинки видимы, то убираем их, используя соответствующие процедуры
If Text1. Visible = True Then TextExit
If Picture9. Visible = True Then PictureExit
If Button = 1 Then Picture1. ForeColor = Picture8(1).BackColor _
Else Picture1. ForeColor = Picture8(0).BackColor
Если в списке инструментов выбраны выделение рисунка или вставка текста, то определяем толщину, режим и стиль рисования
If Option1(0).Value = True Or Option1(6).Value = True Then
Picture1.DrawWidth = 1
Picture1.DrawMode = vbInvert
Picture1.DrawStyle = vbDot
End If
Если выбран ластик, то задаем ширину и цвет как у фона:
If Option1(1).Value = True Then
Picture1.DrawWidth = 5
Picture1.ForeColor = Picture8(0).BackColor
Picture1.PSet (X, Y)
End If
Если выбрана заливка, то устанавливаем стиль и цвет заливки:
If Option1(2).Value = True Then
Picture1.FillStyle = 0
Picture1.FillColor = Picture1. ForeColor
Закрашиваем замкнутый участок рисунка
ExtFloodFill Picture1. hdc, X, Y, Picture1. Point (X, Y), 1
Picture1.FillStyle = 1
End If
Если выбрана установка цвета
If Option1(3).Value = True Then
Picture8(1).BackColor = Picture1. Point (X, Y)
End If
Если выбран карандаш
If Option1(4).Value = True Then
Picture1.PSet (X, Y)
End If
Если выбран распылитель, устанавливается его толщина в единицу, а интервал таймера устанавливается в одну сотую секунды (процедура для распыления написана в таймере)
If Option1(5).Value = True Then
Picture1.DrawWidth = 1
Timer1.Interval = 10
End If
Если выбрана линия или прямоугольник
If Option1(7).Value = True Or Option1(8).Value = True Then
Picture1.DrawMode = vbInvert
End If
Если выбран эллипс
If Option1(9).Value = True Then
Picture1.AutoRedraw = False
Picture1.DrawMode = vbInvert
End If
Устанавливаем начальные координаты:
x0 = X
y0 = Y
picMouseDown = True
picDrawFirst = True
End Sub
Процедура Picture1_MouseMove определяет набор действий при перемещении мыши
Private Sub Picture1_MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single)
В некоторых случаях может получится, что событие MouseMove может возникнуть без предварительного события MouseDown
Поэтому если события MouseDown не было, то выходим из процедуры
If picMouseDown = False Then Exit Sub
Если выбрано выделение рисунка, вставка текста или рисование прямоугольника
If Option1(0).Value = True Or Option1(6).Value = True Or Option1(8).Value = True Then
Если прямоугольник был нарисован, то стираем его и рисуем прямоугольник с новыми координатами
If picDrawFirst = False Then
Picture1.Line (x0, y0)-(x1, y1), B
End If
Picture1.Line (x0, y0)-(X, Y), B
End If
Если выбран ластик или карандаш, то проводим линию указанного цвета (если это ластик, то цвет-это цвет фона):
If Option1(1).Value = True Or Option1(4).Value = True Then
Picture1.Line -(X, Y)
End If
Если выбрана установка цвета
If Option1(3).Value = True Then
Picture8(1).BackColor = Picture1. Point (X, Y)
End If
Если выбран распылитель, то указываем координаты
If Option1(5).Value = True Then
x0 = X
y0 = Y
End If
Если выбрана линия
If Option1(7).Value = True Then
Если линия была нарисована, то стираем ее и рисуем линию с новыми координатами
If picDrawFirst = False Then
Picture1.Line (x0, y0)-(x1, y1)
End If
Picture1.Line (x0, y0)-(X, Y)
End If
Если выбран эллипс
If Option1(9).Value = True Then
Если эллипс был нарисован, то стираем его и рисуем эллипс с новыми координатами
If picDrawFirst = False Then
Ellipse Picture1. hdc, x0, y0, x1, y1
End If
Ellipse Picture1. hdc, x0, y0, X, Y
End If
x1 = X
y1 = Y
picDrawFirst = False
End Sub
Процедура определяет набор действий при отпускании кнопки мыши
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If picMouseDown = False Then Exit Sub
Dim yt As Single, yd As Single, xl As Single, xr As Single
Если выбрано выделение рисунка
If Option1(0).Value = True Then
Если был нарисован прямоугольник, то стираем его
If picDrawFirst = False Then
Picture1.Line (x0, y0)-(x1, y1), B
End If
Picture1.DrawMode = vbCopyPen
Picture1.DrawWidth = picDrawWidth
Picture1.DrawStyle = vbSolid
Передвигаем Picture9 в соответствии с координатами прямоугольника
If x0 < x1 Then xl = x0: xr = x1 Else xl = x1: xr = x0
If y0 < y1 Then yu = y0: yd = y1 Else yu = y1: yd = y0
Picture9.Move xl — 1, yu — 1, xr — xl + 3, yd — yu + 3
Рисуем на Picture9 изображение той части рисунка, над которой он находится
Picture9.Cls
Picture9.PaintPicture Picture1. image, 0, 0, xr — xl + 1, yd — yu + 1, xl, yu, xr — xl + 1, yd — yu + 1
Picture1.ForeColor = Picture8(0).BackColor
Стираем ту часть рисунка, над которой находится Picture9
Picture1.DrawWidth = 1
Picture1.Line (xl, yu)-(xr, yd), BF
Picture1.DrawWidth = picDrawWidth
Picture9.Visible = True
Picture9.SetFocus
End If
Если выбран ластик, то указываем его толщину
If Option1(1).Value = True Then
Picture1.DrawWidth = picDrawWidth
End If
Если выбран распылитель, то указываем его толщину, а интервал таймера устанавливаем в ноль
If Option1(5).Value = True Then
Picture1.DrawWidth = picDrawWidth
Timer1.Interval = 0
End If
Если выбрана вставка текста
If Option1(6).Value = True Then
Если был нарисован прямоугольник, то стираем его
If picDrawFirst = False Then
Picture1.Line (x0, y0)-(x1, y1), B
End If
Picture1.DrawMode = vbCopyPen
Picture1.DrawWidth = picDrawWidth
Picture1.DrawStyle = vbSolid
Text1.Text = «»
Передвигаем текстовое окошко в соответствии с координатами прямоугольника
If x0 < x1 Then xl = x0: xr = x1 Else xl = x1: xr = x0
If y0 < y1 Then yu = y0: yd = y1 Else yu = y1: yd = y0
Text1.Move xl — 1, yu — 1, xr — xl + 3, yd — yu + 3
Делаем текст видимым и устанавливаем на него фокус
Text1.Visible = True
Text1.SetFocus
End If
Если выбрана линия
If Option1(7).Value = True Then
Если линия была нарисована, то стираем ее и окончательно рисуем линию с новыми координатами
If picDrawFirst = False Then
Picture1.Line (x0, y0)-(x1, y1)
End If
Picture1.DrawMode = vbCopyPen
Picture1.Line (x0, y0)-(X, Y)
End If
Если выбран прямоугольник
If Option1(8).Value = True Then
и если прямоугольник был нарисован, то стираем его и окончательно рисуем прямоугольник с новыми координатами
If picDrawFirst = False Then
Picture1.Line (x0, y0)-(x1, y1), B
End If
Picture1.DrawMode = vbCopyPen
Picture1.Line (x0, y0)-(X, Y), B
End If
Если выбран эллипс
If Option1(9).Value = True Then
Если эллипс был нарисован, то стираем его и окончательно рисуем эллипс с новыми координатами
If picDrawFirst = False Then
Ellipse Picture1. hdc, x0, y0, x1, y1
End If
Picture1.DrawMode = vbCopyPen
Picture1.AutoRedraw = True
Ellipse Picture1. hdc, x0, y0, X, Y
Обновляем изображение
Picture1.Refresh
End If
Устанавливаем режим нажатия мыши в «Ложь»
picMouseDown = False
End Sub
Процедура Timer1_Timer () определяет набор действий при работе таймера:
Private Sub Timer1_Timer ()
Dim i As Integer
Создаем эффект распыления путем печати точек с произвольными координатами вокруг координат мышки
For i = 1 To 10
Picture1.PSet (x0 — 5 + Int (Rnd * 11), y0 — 5 + Int (Rnd * 11)), Picture1. ForeColor
Next
End Sub
Процедура Picture9_MouseMove совершает следующий набор действий:
Private Sub Picture9_MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single)
Если нажата кнопка мышки, то перемещаем выделенную картинку в соответствии с координатами мышки
If Button = 1 Then
Picture9.Left = Picture9. Left + X — x0
Picture9.Top = Picture9. Top + Y — y0
End If
End Sub
Процедура Text1_Change () совершает следующий набор действий
Private Sub Text1_Change ()
Отрисовывает текст и имитирует autosize для текстового окошка
Label1.Caption = Text1. Text
If Label1. Width + 10 > Text1. Width Then Text1. Width = Label1. Width + 10
End Sub
Процедура Picture5_Click позволяет выбрать толщину указанной линии:
Private Sub Picture5_Click (Index As Integer)
Выбор толщины линии
PictureRedraw (Index)
Picture1.DrawWidth = Index + 1
picDrawWidth = Index + 1
End Sub
Процедура Picture6_MouseDown совершает следующие операции
Private Sub Picture6_MouseDown (Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
Выбор цвета:
If Button = 1 Then
Picture8(1).BackColor = Picture6(Index).BackColor
Else
Picture8(0).BackColor = Picture6(Index).BackColor
End If
End Sub
Процедура Picture1_Resize () устанавливает максимальные значения полос прокруток в соответствии с размером рисунка:
Private Sub Picture1_Resize ()
HScroll1.Value = 0
VScroll1.Value = 0
Делает видимой полосу горизонтального скроллинга при некотором условии:
If Picture1. Width > Picture2. ScaleWidth — 17 Then
HScroll1.Max = Picture1. Width — Picture2. ScaleWidth + 17
HScroll1.Enabled = True
Else
Иначе полоса горизонтального скроллинга невидима:
HScroll1.Enabled = False
End If
If Picture1. Height > Picture2. ScaleHeight — 17 Then
VScroll1.Max = Picture1. Height — Picture2. ScaleHeight + 17
VScroll1.Enabled = True
Else
VScroll1.Enabled = False
End If
End Sub
Следующие процедуры реализуют команды меню
Файл, Правка, Изображение
Private Sub new_Click ()
If Text1. Visible = True Then TextExit
If Picture9. Visible = True Then PictureExit
Picture1.Picture = Nothing
Picture1.BackColor = vbWhite
Picture1.Width = 441
Picture1.Height = 361
Picture8(1).BackColor = vbBlack
Picture8(0).BackColor = vbWhite
Form1.Caption = «Точечный рисунок — GraphEdit»
End Sub
Private Sub open_Click ()
If Text1. Visible = True Then TextExit
If Picture9. Visible = True Then PictureExit
On Error Resume Next
CommonDialog1.ShowOpen
If Err Then Exit Sub
Form1.Caption = CommonDialog1. FileTitle + «- GraphEdit»
Picture1.Picture = LoadPicture (CommonDialog1.FileName)
Picture8(1).BackColor = vbBlack
Picture8(0).BackColor = vbWhite
End Sub
Private Sub save_Click ()
If Text1. Visible = True Then TextExit
If Picture9. Visible = True Then PictureExit
CommonDialog1.FileName = Left$(Form1.Caption, Len (Form1.Caption) — 12)
On Error Resume Next
CommonDialog1.ShowSave
If Err Then Exit Sub
If CommonDialog1. FileName <> «» Then
Form1.Caption = CommonDialog1. FileTitle + «- GraphEdit»
SavePicture Picture1. image, CommonDialog1. FileName
End If
End Sub
Private Sub print_Click ()
If Text1. Visible = True Then TextExit
If Picture9. Visible = True Then PictureExit
Printer.PaintPicture Picture1. image, 0, 0
Printer.EndDoc
End Sub
Private Sub size_Click ()
Form2.Text1.Text = Picture1. Width
Form2.Text2.Text = Picture1. Height
Form2.Show vbModal
End Sub
Private Sub clear_Click ()
If Text1. Visible = True Then TextExit
If Picture9. Visible = True Then PictureExit
Picture1.Picture = Nothing
Picture1.BackColor = Picture8(0).BackColor
End Sub
Private Sub copy_Click ()
If Picture9. Visible = True Then
Clipboard.clear
Clipboard.SetData Picture9. image
End If
End Sub
Private Sub cut_Click ()
If Picture9. Visible = True Then
Clipboard.clear
Clipboard.SetData Picture9. image
Picture9.Visible = False
End If
End Sub
Private Sub paste_Click ()
Option1(0).Value = True
Picture9.Picture = Clipboard. GetData ()
Picture9.Move -1, -1
If Picture1. Width < Picture9. ScaleWidth Then Picture1. Width = Picture9. ScaleWidth
If Picture1. Height < Picture9. ScaleHeight Then Picture1. Height = Picture9. ScaleHeight
Picture9.Visible = True
End Sub
3.3 Аппаратные и программные средства создания и эксплуатации программного комплекса
Для функционирования программного комплекса необходимы следующие аппаратные ресурсы:
Процессор — Pentium 4, Celeron и выше;
Оперативная память — 256 MB и выше;
Видеокарта с памятью 128 Мб и выше;
Монитор с разрешением 1024×768 и выше;
Жесткий диск объемом 1 ГБ и выше.
Для функционирования программного комплекса необходимо следующее программное обеспечение:
Операционная система Windows XP, Vista, 7.
Microsoft Visual Basic 6.0 или выше
3.4 Руководство пользователя
Программа имеет имя Project1. Для запуска программного комплекса на компьютере должен быть установлен Visual Basic 6.0. Запускаем в меню пуск программу Microsoft Visual Basic 6.0. После запуска открываем вкладку File, там выбираем Open Project, после выбираем файл Project 1.vbp.
Открывается проект, в котором мы видим окошко с программным кодом и окошко самой программы. Чтобы запустить саму программу, нажимаем под вкладкой Diagramm кнопку Start. Открывается уже работающая программа, в которой мы можем производить различные действия. Открываем вкладку Создать. Создается файл с расширением.bmp. К нему мы можем применять различные графические инструменты, такие как Кисть, карандаш, Распылитель и т. д.
После редактирования мы можем охранить этот файл на диске с помощью функции сохранить. После можно загрузить с помощью кнопки открыть. Так же изображение можно вырезать, копировать и вставить. Можно изменять размер изображения и очищать рабочее пространство.
3.5 Описание контрольного примера
Программа имеет имя Project1.exe. Для её запуска необходимо перейти в соответствующую директорию и дважды кликнуть мышкой на имени файла. После запуска программы на экране появиться главное окно программного комплекса (Рис.А1.). Далее можно кликнуть мышкой на какой либо инструмент, в зависимости от требуемой задачи. Так например кликнем на инструмент заливка. После этого инструмент измениться со стандартного карандаша, на выбранный — заливка (Рис.А2.). Ниже расположена палитра цветов, в которой можно выбрать цвет инструмента и рисовать этим цветом, так например выберем зеленый цвет и используем заливку красного цвета (Рис.А3.). Чтобы очистить экран рабочего пространства, можно использовать 2 способа, один долгий, выбрав инструмент ластик (Рис.А4.) другой более быстрый выбрав вкладку Изображение-Очистить (Рис.А5.), при этом сразу очищается рабочее пространство. Так же у нас есть в панели инструментов такие инструменты как текст. Для того чтобы применить инструмент текст надо нажать на соответствующую кнопку в панели инструментов, после чего выбрать область в которой будет написан текст (Рис.А6). После этих операций мы сможем написать текст в выделенной области (Рис.А7.). Теперь применим инструмент прямоугольник. Мы выделяем область мышкой и таким образом у нас рисуется прямоугольник (Рис.А8.). Выберем инструмент эллипс. Нарисуем эллипс. Для этого нам всего лишь надо, аналогично с прямоугольником выбрать область и всё, эллипс нарисован (Рис А9). Теперь испытаем инструмент линия. Для этого нужно выбрать инструмент линия в панели инструментов и просто протянуть мышкой линию, чтобы её начертить (Рис А10).
Теперь рассмотрим верхнюю панель программного комплекса. Там находятся такие вкладки как: Файл, Правка и Изображение.
Рассмотрим вкладку Файл, там мы видим такие пункты как Создать, Открыть, Сохранить, Печать, Выход. При нажатии кнопки Создать открывается чистый лист на котором мы можем выполнять различные действия. При нажатии на кнопку открыть мы можем выбрать сохраненный рисунок в формате. bmp (Рис А11.). При выборе пункта Сохранить открывается окошко «Сохранить как» и там мы задаём имя, а так же путь куда надо сохранить файл (Рис.А12). При выборе Печати, открывается окошко печати в файл (Рис.А13.). При выборе Пункта выход, осуществляется выход из программы.
Рассмотрим следующую вкладку под названием Правка, там есть Пункты Вставить, Копировать и Вырезать. Вставить осуществляет вставку копированного изображения, Копировать заносит в буфер изображение, вырезать, осуществляет вырезку изображения.
Вкладка Изображение содержит всего 2 пункта, Очистить и Размер.
Очистить выполняет операцию по очищению рабочего листа. Пункт Размер открывает окошко в котором можно задать параметры ширины и высоты рабочего листа (Рис.А14).
Выводы
приложение редактирование изображение
В результате написания работы спроектирован программный комплекс для работы с изображениями.
Программа включает в себя 10 инструментов по работе с изображениями, палитру, состоящую из 16 цветов.
Разработанный программный комплекс, позволяет:
1. Создавать изображение формата. bmp, а также сохранять его на диске и загружать его с диска.
2. Редактировать изображение благодаря панели инструментов
3. Вырезать, копировать, а также вставлять изображение в какой либо другой файл
4. Изменять размер изображения и выводить его на печать
5. Очищать рабочее пространство, когда это потребуется Для решения поставленной задачи была использована среда быстрой разработки приложений Visual Basic.
Список ссылок
1. Visual Basic [Электрон. ресурс]. — Режим доступа: http://ru.wikipedia.org/wiki/VB
2. Visual Basic [Электрон. ресурс]. — Режим доступа: http://www.microsoft.com/visualstudio/en-us/products/2010;editions/visual-basic-express
3. Visual Basic [Электрон. ресурс]. — Режим доступа: http://lib.mexmat.ru/books/43 894
Приложение А
Экранные формы
Рис.А1.
Рис.А2.
Рис.А3.
Рис.А4.
Рис.А5.
Рис.А6.
Рис.А7.
Рис А8.
Рис.А9.
Рис А10.
Рис.А11.
Рис.А12.
Рис. А13
Рис. А14
Приложение В
Листинг программы
Private Declare Function Ellipse Lib «gdi32» (ByVal hdc As Long, ByVal x1 As Long, ByVal y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function ExtFloodFill Lib «gdi32» (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long, ByVal wFillType As Long) As Long
Dim x0 As Single, y0 As Single
Dim x1 As Single, y1 As Single
Dim picDrawFirst As Boolean
Dim picDrawWidth As Integer
Dim picMouseDown As Boolean
Private Sub Form_Load ()
Dim i As Integer
For i = 0 To 15
Picture6(i).BackColor = QBColor (i)
Next
PictureRedraw (0)
picDrawWidth = 1
Picture1.MouseIcon = Image5
CommonDialog1.Filter = «*.bmp|*.bmp»
End Sub
Private Sub PictureRedraw (Index As Integer)
Dim i As Integer
For i = 0 To 4
If i = Index Then
Picture5(i).BackColor = vbHighlight
Picture5(i).ForeColor = vbHighlightText
Else
Picture5(i).BackColor = vbButtonFace
Picture5(i).ForeColor = vbButtonText
End If
Picture5(i).Line (0, 4)-(41, 4)
Next
End Sub
Private Sub Option1_Click (Index As Integer)
Select Case Index
Case 1
Picture1.MouseIcon = Image2
Case 2
Picture1.MouseIcon = Image3
Case 3
Picture1.MouseIcon = Image4
Case 4
Picture1.MouseIcon = Image5
Case 5
Picture1.MouseIcon = Image6
Case 0, 6 To 9
Picture1.MouseIcon = Image7
End Select
If Text1. Visible = True Then TextExit
If Picture9. Visible = True Then PictureExit
End Sub
Private Sub TextExit ()
Text1.Visible = False
Set Picture1. Font = Text1. Font
Picture1.CurrentX = Text1. Left + 2
Picture1.CurrentY = Text1. Top + 2
Picture1.ForeColor = Picture8(1).BackColor
Picture1.Print Text1. Text
End Sub
Private Sub PictureExit ()
Picture9.Visible = False
Picture1.PaintPicture Picture9. image, Picture9. Left + 1, _
Picture9.Top + 1, Picture9. Width — 2, Picture9. Height — 2, _
0, 0, Picture9. Width — 2, Picture9. Height — 2
End Sub
Private Sub Option1_GotFocus (Index As Integer)
Picture1.SetFocus
End Sub
Private Sub Picture1_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)
If Text1. Visible = True Then TextExit
If Picture9. Visible = True Then PictureExit
If Button = 1 Then Picture1. ForeColor = Picture8(1).BackColor _
Else Picture1. ForeColor = Picture8(0).BackColor
If Option1(0).Value = True Or Option1(6).Value = True Then
Picture1.DrawWidth = 1
Picture1.DrawMode = vbInvert
Picture1.DrawStyle = vbDot
End If
If Option1(1).Value = True Then
Picture1.DrawWidth = 5
Picture1.ForeColor = Picture8(0).BackColor
Picture1.PSet (X, Y)
End If
If Option1(2).Value = True Then
Picture1.FillStyle = 0
Picture1.FillColor = Picture1. ForeColor
ExtFloodFill Picture1. hdc, X, Y, Picture1. Point (X, Y), 1
Picture1.FillStyle = 1
End If
If Option1(3).Value = True Then
Picture8(1).BackColor = Picture1. Point (X, Y)
End If
If Option1(4).Value = True Then
Picture1.PSet (X, Y)
End If
If Option1(5).Value = True Then
Picture1.DrawWidth = 1
Timer1.Interval = 10
End If
If Option1(7).Value = True Or Option1(8).Value = True Then
Picture1.DrawMode = vbInvert
End If
If Option1(9).Value = True Then
Picture1.AutoRedraw = False
Picture1.DrawMode = vbInvert
End If
x0 = X
y0 = Y
picMouseDown = True
picDrawFirst = True
End Sub
Private Sub Picture1_MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single)
If picMouseDown = False Then Exit Sub
If Option1(0).Value = True Or Option1(6).Value = True Or Option1(8).Value = True Then
If picDrawFirst = False Then
Picture1.Line (x0, y0)-(x1, y1), B
End If
Picture1.Line (x0, y0)-(X, Y), B
End If
If Option1(1).Value = True Or Option1(4).Value = True Then
Picture1.Line -(X, Y)
End If
If Option1(3).Value = True Then
Picture8(1).BackColor = Picture1. Point (X, Y)
End If
If Option1(5).Value = True Then
x0 = X
y0 = Y
End If
If Option1(7).Value = True Then
If picDrawFirst = False Then
Picture1.Line (x0, y0)-(x1, y1)
End If
Picture1.Line (x0, y0)-(X, Y)
End If
If Option1(9).Value = True Then
If picDrawFirst = False Then
Ellipse Picture1. hdc, x0, y0, x1, y1
End If
Ellipse Picture1. hdc, x0, y0, X, Y
End If
x1 = X
y1 = Y
picDrawFirst = False
End Sub
Private Sub Picture1_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single)
If picMouseDown = False Then Exit Sub
Dim yt As Single, yd As Single, xl As Single, xr As Single
If Option1(0).Value = True Then
If picDrawFirst = False Then
Picture1.Line (x0, y0)-(x1, y1), B
End If
Picture1.DrawMode = vbCopyPen
Picture1.DrawWidth = picDrawWidth
Picture1.DrawStyle = vbSolid
If x0 < x1 Then xl = x0: xr = x1 Else xl = x1: xr = x0
If y0 < y1 Then yu = y0: yd = y1 Else yu = y1: yd = y0
Picture9.Move xl — 1, yu — 1, xr — xl + 3, yd — yu + 3
Picture9.Cls
Picture9.PaintPicture Picture1. image, 0, 0, xr — xl + 1, yd — yu + 1, xl, yu, xr — xl + 1, yd — yu + 1
Picture1.ForeColor = Picture8(0).BackColor
Picture1.DrawWidth = 1
Picture1.Line (xl, yu)-(xr, yd), BF
Picture1.DrawWidth = picDrawWidth
Picture9.Visible = True
Picture9.SetFocus
End If
If Option1(1).Value = True Then
Picture1.DrawWidth = picDrawWidth
End If
If Option1(5).Value = True Then
Picture1.DrawWidth = picDrawWidth
Timer1.Interval = 0
End If
If Option1(6).Value = True Then
If picDrawFirst = False Then
Picture1.Line (x0, y0)-(x1, y1), B
End If
Picture1.DrawMode = vbCopyPen
Picture1.DrawWidth = picDrawWidth
Picture1.DrawStyle = vbSolid
Text1.Text = «»
If x0 < x1 Then xl = x0: xr = x1 Else xl = x1: xr = x0
If y0 < y1 Then yu = y0: yd = y1 Else yu = y1: yd = y0
Text1.Move xl — 1, yu — 1, xr — xl + 3, yd — yu + 3
Text1.Visible = True
Text1.SetFocus
End If
If Option1(7).Value = True Then
If picDrawFirst = False Then
Picture1.Line (x0, y0)-(x1, y1)
End If
Picture1.DrawMode = vbCopyPen
Picture1.Line (x0, y0)-(X, Y)
End If
If Option1(8).Value = True Then
If picDrawFirst = False Then
Picture1.Line (x0, y0)-(x1, y1), B
End If
Picture1.DrawMode = vbCopyPen
Picture1.Line (x0, y0)-(X, Y), B
End If
If Option1(9).Value = True Then
If picDrawFirst = False Then
Ellipse Picture1. hdc, x0, y0, x1, y1
End If
Picture1.DrawMode = vbCopyPen
Picture1.AutoRedraw = True
Ellipse Picture1. hdc, x0, y0, X, Y
Picture1.Refresh
End If
picMouseDown = False
End Sub
Private Sub Timer1_Timer ()
Dim i As Integer
For i = 1 To 10
Picture1.PSet (x0 — 5 + Int (Rnd * 11), y0 — 5 + Int (Rnd * 11)), Picture1. ForeColor
Next
End Sub
Private Sub Picture9_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)
x0 = X
y0 = Y
If Button = 2 Then PopupMenu edit
End Sub
Private Sub Picture9_MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Picture9.Left = Picture9. Left + X — x0
Picture9.Top = Picture9. Top + Y — y0
End If
End Sub
Private Sub Text1_Change ()
Label1.Caption = Text1. Text
If Label1. Width + 10 > Text1. Width Then Text1. Width = Label1. Width + 10
End Sub
Private Sub Picture5_Click (Index As Integer)
PictureRedraw (Index)
Picture1.DrawWidth = Index + 1
picDrawWidth = Index + 1
End Sub
Private Sub Picture6_MouseDown (Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Picture8(1).BackColor = Picture6(Index).BackColor
Else
Picture8(0).BackColor = Picture6(Index).BackColor
End If
End Sub
Private Sub Picture1_Resize ()
HScroll1.Value = 0
VScroll1.Value = 0
If Picture1. Width > Picture2. ScaleWidth — 17 Then
HScroll1.Max = Picture1. Width — Picture2. ScaleWidth + 17
HScroll1.Enabled = True
Else
HScroll1.Enabled = False
End If
If Picture1. Height > Picture2. ScaleHeight — 17 Then
VScroll1.Max = Picture1. Height — Picture2. ScaleHeight + 17
VScroll1.Enabled = True
Else
VScroll1.Enabled = False
End If
End Sub
Private Sub VScroll1_Change ()
Picture1.Top = -VScroll1.Value
End Sub
Private Sub VScroll1_Scroll ()
Picture1.Top = -VScroll1.Value
End Sub
Private Sub HScroll1_Change ()
Picture1.Left = -HScroll1.Value
End Sub
Private Sub HScroll1_Scroll ()
Picture1.Left = -HScroll1.Value
End Sub
Private Sub new_Click ()
If Text1. Visible = True Then TextExit
If Picture9. Visible = True Then PictureExit
Picture1.Picture = Nothing
Picture1.BackColor = vbWhite
Picture1.Width = 441
Picture1.Height = 361
Picture8(1).BackColor = vbBlack
Picture8(0).BackColor = vbWhite
Form1.Caption = «Точечный рисунок — GraphEdit»
End Sub
Private Sub open_Click ()
If Text1. Visible = True Then TextExit
If Picture9. Visible = True Then PictureExit
On Error Resume Next
CommonDialog1.ShowOpen
If Err Then Exit Sub
Form1.Caption = CommonDialog1. FileTitle + «- GraphEdit»
Picture1.Picture = LoadPicture (CommonDialog1.FileName)
Picture8(1).BackColor = vbBlack
Picture8(0).BackColor = vbWhite
End Sub
Private Sub save_Click ()
If Text1. Visible = True Then TextExit
If Picture9. Visible = True Then PictureExit
CommonDialog1.FileName = Left$(Form1.Caption, Len (Form1.Caption) — 12)
On Error Resume Next
CommonDialog1.ShowSave
If Err Then Exit Sub
If CommonDialog1. FileName <> «» Then
Form1.Caption = CommonDialog1. FileTitle + «- GraphEdit»
SavePicture Picture1. image, CommonDialog1. FileName
End If
End Sub
Private Sub print_Click ()
If Text1. Visible = True Then TextExit
If Picture9. Visible = True Then PictureExit
Printer.PaintPicture Picture1. image, 0, 0
Printer.EndDoc
End Sub
Private Sub size_Click ()
Form2.Text1.Text = Picture1. Width
Form2.Text2.Text = Picture1. Height
Form2.Show vbModal
End Sub
Private Sub clear_Click ()
If Text1. Visible = True Then TextExit
If Picture9. Visible = True Then PictureExit
Picture1.Picture = Nothing
Picture1.BackColor = Picture8(0).BackColor
End Sub
Private Sub copy_Click ()
If Picture9. Visible = True Then
Clipboard.clear
Clipboard.SetData Picture9. image
End If
End Sub
Private Sub cut_Click ()
If Picture9. Visible = True Then
Clipboard.clear
Clipboard.SetData Picture9. image
Picture9.Visible = False
End If
End Sub
Private Sub paste_Click ()
Option1(0).Value = True
Picture9.Picture = Clipboard. GetData ()
Picture9.Move -1, -1
If Picture1. Width < Picture9. ScaleWidth Then Picture1. Width = Picture9. ScaleWidth
If Picture1. Height < Picture9. ScaleHeight Then Picture1. Height = Picture9. ScaleHeight
Picture9.Visible = True
End Sub