Разработка программы 'Графический редактор'
Міністерство освіти і науки, молоді і спорту України
Донецький національний університет
Кафедра КОМП’ЮТЕРНИХ технологій
Курсова
робота
Тема:
«Розробка програми «Графічний редактор»
Виконавець:
студент 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, ГРАФІЧНИЙ
РЕДАКТОР, ЗОБРАЖЕННЯ
Содержание
Введение
. Постановка задачи
. Среда разработки приложений
Microsoft Visual Basic
. Программа « Графический редактор»
.1 Структура программного комплекса
.2 Описание объектов и их
взаимодействия
.3 Аппаратные и программные средства
создания и эксплуатации программного комплекса
.5 Описание контрольного примера
Выводы
Список ссылок
Приложения
Введение
Актуальность данного программного комплекса
заключается в том, что в данное время очень многие люди пользуются графическими
редакторами для различных нужд. Так же актуальность обусловлена тем, что
каждый, студент, преподаватель, человек в нашем обществе должен владеть
компьютерными знаниями на довольно таки высоком уровне. В эти знания так же
входят знания по работе с графическими редакторами.
На сегодняшнее время графический редактор должен
обладать несколькими важными свойствами. Он должен иметь довольно таки немалый
набор инструментов для работы с графическими файлами. Так же должен иметься
набор инструментов, которые позволяют вырезать, копировать и вставлять
изображения, а так же изменять их размер и печатать их на листе бумаги.
В данном программном комплексе будет
задействован набор инструментов, который включает в себя такие инструменты как:
карандаш, кисть, распылитель, заливка, линия, эллипс, прямоугольник, текст и
выделение области. Так же будет иметься палитра для изменения цвета
используемого инструмента. Будет предоставлена возможность вырезать,
скопировать и вставлять изображение, изменять размер изображения и
распечатывать его.
1. Постановка задачи
Разработать программный комплекс на Visual
Basic по работе с
изображениями.
Программный комплекс должен выполнять следующие
действия:
.Создавать пустой файл, в котором бы
производились различные действия со следующими графическими инструментами:
карандаш, ластик, распылитель, заливка, эллипс, прямоугольник, линия, текст.
.Загружать рисунок, фотографию или другой
графический объект с диска
.Сохранять графический файл после редактирования
на диск
.Выполнять действия: Копировать, Вставить,
Вырезать.
.Осуществлять печать изображения.
.Выполнять очистку рабочего пространства и
изменение размера изображения.
2. Среда разработки приложений Microsoft
Visual
Basic
Visual Basic - средство разработки программного
обеспечения, разрабатываемое корпорацией Microsoft и включающее язык программирования
и среду разработки. Язык Visual Basic унаследовал дух, стиль и отчасти
синтаксис своего предка - языка Бейсик, у которого есть немало диалектов. В то
же время Visual Basic сочетает в себе процедуры и элементы
объектно-ориентированных и компонентно-ориентированных языков программирования.
Среда разработки VB включает инструменты для визуального конструирования
пользовательского интерфейса.Basic считается хорошим средством быстрой
разработки прототипов программы, для разработки приложений баз данных и вообще
для компонентного способа создания программ, работающих под управлением
операционных систем семейства Microsoft Windows.
Первое признание серьёзными разработчиками
Visual Basic получил после выхода версии 3 - VB3. Окончательное признание как полноценного
средства программирования для Windows - при выходе версии 5 - VB5. Версия VB6,
входящая в состав Microsoft Visual Studio 6.0, стала по-настоящему зрелым и
функционально богатым продуктом. После этого разработчики из Microsoft
существенно изменили направление развития данной технологии.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
.2 Описание объектов и их
взаимодействия
Проект программы Project1.vbp
включает в себя файлы Form1.frm
и Form2.frm.
В них содержится набор функций и процедур, посредством которых осуществляется
работа программного комплекса.
Основные объекты проекта такие:
Form1-контейнер
содержащий все остальные компоненты приложения
Меню которое содержит вкладки:
Файл-Создать-Открыть-Сохранить-Печать-Выход;
Правка-Вырезать-Копировать-Вставить; Изображение-Размер-Очистить;(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,4^38... -1,4^-45 для
отрицательных чисел и 1,4^-45... 3,4^38 для положительных чисел.
Dim x0 As Single, y0 As Singlex1 As
Single, y1 As Single
Переменная булевского типа, определяющая
рисуется картинка впервые или нетpicDrawFirst As Boolean
Переменная picDrawWidth целого типа определяет
толщину линии. Изначально' устанавливается в единицуpicDrawWidth As Integer
Переменная булевского типа, определяющая нажата
ли мышка на изображенииpicMouseDown As Boolean
Опишем процедуры нашей программы
Процедура вызывается Form
Load()
при загрузке формы (запуске программы)
Private Sub Form_Load()i As Integer
Задает фоновый
цвет
объектам
Picture6(0)-Picture6(15) типа
PictureBoxi = 0 To 15(i).BackColor = QBColor(i)
Next(0)
Устанавливает в единицу ширину контура
изображения= 1
Устанавливает изображение курсора мышки в
изображение Image5 - карандаш.MouseIcon = Image5
устанавливает по умолчанию маску выбираемых из
папки файлов в формат bmp
CommonDialog1.Filter =
"*.bmp|*.bmp"Sub
Процедура Picture
Redraw()
реализует меню выбора толщины линии
Выбранную линию выделяем одним цветом, остальные
другим
Private Sub Picture Redraw(Index As
Integer)i As Integer
Цикл по
5 типам
линий
For i = 0 To 4
Если выбранная линия, то выделяем ее
If i = Index Then(i).BackColor =
vbHighlight(i).ForeColor = vbHighlightText
иначе задаем
черную
линию
на
сером
фоне(i).BackColor
= vbButtonFace(i).ForeColor = vbButtonTextIf
рисуем саму
линию(i).Line
(0, 4)-(41, 4)
NextSub
Процедура Sub
Option1_Click устанавливает вид курсора мыши в зависимости от нажатой
кнопки графического меню
Private Sub Option1_Click(Index As
Integer)Case Index1.MouseIcon = Image22.MouseIcon = Image33.MouseIcon =
Image44.MouseIcon = Image55.MouseIcon = Image60, 6 To 9
Picture1.MouseIcon = Image7Select
Если окна для вставки текста или картинки
видимы, то убираем их, используя соответствующие процедуры TextExit
и PictureExit
If Text1.Visible = True Then
TextExitPicture9.Visible = True Then PictureExit
End Sub
Процедура Private
Sub TextExit() переносит текст из текстового поля в рисунок и скрывает
это поле
Private Sub TextExit().Visible =
FalsePicture1.Font = Text1.Font.CurrentX = Text1.Left + 2.CurrentY = Text1.Top
+ 2.ForeColor = Picture8(1).BackColor.Print Text1.TextSub
Процедура
PictureExit() переносит рисунок из графического окна в основной рисунок
и скрывает это окно
Private Sub PictureExit().Visible =
False.PaintPicture Picture9.image, Picture9.Left + 1, _.Top + 1, Picture9.Width
- 2, Picture9.Height - 2, _
, 0, Picture9.Width - 2,
Picture9.Height - 2Sub
Процедура Picture1_MouseDown
определяет набор действий при нажатии на кнопку мыши
Private Sub
Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As
Single)
Если окна для вставки текста или картинки
видимы, то убираем их, используя соответствующие процедуры
If Text1.Visible = True Then
TextExitPicture9.Visible = True Then PictureExitButton = 1 Then
Picture1.ForeColor = Picture8(1).BackColor _
Else Picture1.ForeColor = Picture8(0).BackColor
Если в списке инструментов выбраны выделение
рисунка или вставка текста, то определяем толщину, режим и стиль рисования
If Option1(0).Value = True Or
Option1(6).Value = True Then.DrawWidth = 1.DrawMode = vbInvert.DrawStyle =
vbDot
End If
Если выбран ластик, то задаем ширину и цвет как
у фона:
If Option1(1).Value = True
Then.DrawWidth = 5.ForeColor = Picture8(0).BackColor.PSet (X, Y)
End If
Если выбрана заливка, то устанавливаем стиль и
цвет заливки:
If Option1(2).Value = True
Then.FillStyle = 0.FillColor = Picture1.ForeColor
Закрашиваем замкнутый
участок
рисункаPicture1.hdc,
X, Y, Picture1.Point(X, Y), 1
Picture1.FillStyle = 1If
Если выбрана установка
цвета
If Option1(3).Value = True
Then(1).BackColor = Picture1.Point(X, Y)If
Если выбран
карандашOption1(4).Value
= True Then.PSet (X, Y)If
Если выбран распылитель, устанавливается его
толщина в единицу а интервал таймера устанавливается в одну сотую секунды
(процедура для распыления написана в таймере)
If Option1(5).Value = True
Then.DrawWidth = 1
Timer1.Interval = 10If
Если выбрана линия или прямоугольник
If Option1(7).Value = True Or
Option1(8).Value = True Then.DrawMode = vbInvertIf
Если выбран
эллипсOption1(9).Value
= True Then.AutoRedraw = False.DrawMode = vbInvertIf
Устанавливаем начальные
координаты:=
X= Y= True= TrueSub
Процедура 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.Line
(x0, y0)-(x1, y1),, BIf.Line (x0, y0)-(X, Y),, B
End If
Если выбран ластик или карандаш, то проводим
линию указанного цвета (если это ластик, то цвет-это цвет фона):
Если выбрана
установка
цветаOption1(3).Value
= True Then(1).BackColor = Picture1.Point(X, Y)
End If
Если выбран распылитель, то указываем координаты
If Option1(5).Value = True Then= X
y0 = YIf
Если выбрана линияOption1(7).Value = True Then
Если линия была нарисована, то стираем ее и
рисуем линию с новыми координатами
If picDrawFirst = False Then.Line
(x0, y0)-(x1, y1)If.Line (x0, y0)-(X, Y)If
Если выбран
эллипсOption1(9).Value
= True Then
Если эллипс был нарисован, то стираем его и
рисуем эллипс с новыми координатами
If picDrawFirst = False
ThenPicture1.hdc, x0, y0, x1, y1IfPicture1.hdc, x0, y0, X, YIf= X= Y= False
End Sub
Процедура определяет набор действий при
отпускании кнопки мыши
Private Sub Picture1_MouseUp(Button
As Integer, Shift As Integer, X As Single, Y As Single)picMouseDown = False
Then Exit Subyt As Single, yd As Single, xl As Single, xr As Single
Если выбрано выделение рисункаOption1(0).Value =
True Then
Если был нарисован прямоугольник, то стираем его
If picDrawFirst = False Then.Line
(x0, y0)-(x1, y1),, BIf.DrawMode = vbCopyPen.DrawWidth = picDrawWidth
Picture1.DrawStyle = vbSolid
Передвигаем Picture9 в соответствии с координатами
прямоугольника
If x0 < x1 Then xl = x0: xr = x1
Else xl = x1: xr = x0y0 < y1 Then yu = y0: yd = y1 Else yu = y1: yd =
y0.Move xl - 1, yu - 1, xr - xl + 3, yd - yu + 3
Рисуем на Picture9 изображение той части
рисунка, над которой он находится
Picture9.Cls.PaintPicture
Picture1.image, 0, 0, xr - xl + 1, yd - yu + 1, xl, yu, xr - xl + 1, yd - yu +
1.ForeColor = Picture8(0).BackColor
Стираем ту
часть
рисунка,
над
которой
находится
Picture9.DrawWidth = 1.Line (xl, yu)-(xr, yd),, BF.DrawWidth = picDrawWidth.Visible
= True
Picture9.SetFocusIf
Если выбран ластик, то указываем его толщину
If Option1(1).Value = True
Then.DrawWidth = picDrawWidth
End If
Если выбран распылитель, то указываем его
толщину, а интервал таймера устанавливаем в ноль
If Option1(5).Value = True
Then.DrawWidth = picDrawWidth.Interval = 0If
Если выбрана
вставка
текстаOption1(6).Value
= True Then
Если был нарисован прямоугольник, то стираем его
If picDrawFirst = False Then.Line
(x0, y0)-(x1, y1),, BIf.DrawMode = vbCopyPen.DrawWidth = picDrawWidth.DrawStyle
= vbSolid.Text = ""
Передвигаем текстовое окошко в соответствии с
координатами прямоугольника
If x0 < x1 Then xl = x0: xr = x1
Else xl = x1: xr = x0y0 < y1 Then yu = y0: yd = y1 Else yu = y1: yd =
y0.Move xl - 1, yu - 1, xr - xl + 3, yd - yu + 3
Делаем текст видимым и устанавливаем на него
фокус
Text1.Visible = True.SetFocusIf
Если выбрана
линияOption1(7).Value
= True Then
Если линия была нарисована, то стираем ее и
окончательно рисуем линию с новыми координатами
If picDrawFirst = False Then.Line
(x0, y0)-(x1, y1)If.DrawMode = vbCopyPen.Line (x0, y0)-(X, Y)If
Если выбран
прямоугольникOption1(8).Value
= True Then
и если прямоугольник был нарисован, то стираем
его и окончательно рисуем прямоугольник с новыми координатами
If picDrawFirst = False Then.Line
(x0, y0)-(x1, y1),, BIf.DrawMode = vbCopyPen.Line (x0, y0)-(X, Y),, BIf
Если выбран
эллипсOption1(9).Value
= True Then
Если эллипс был нарисован, то стираем его и
окончательно рисуем эллипс с новыми координатами
If picDrawFirst = False
ThenPicture1.hdc, x0, y0, x1, y1If.DrawMode = vbCopyPen.AutoRedraw =
TruePicture1.hdc, x0, y0, X, Y
Обновляем изображение.RefreshIf
Устанавливаем режим нажатия мыши в «Ложь»=
FalseSub
Процедура Timer1_Timer()
определяет набор действий при работе таймера:
Private Sub Timer1_Timer()i As
Integer
Создаем эффект распыления путем печати точек с
произвольными координатами вокруг координат мышки
For i = 1 To 10.PSet (x0 - 5 +
Int(Rnd * 11), y0 - 5 + Int(Rnd * 11)), Picture1.ForeColor
End
Sub
Процедура Picture9_MouseMove
совершает следующий набор действий:
Private Sub
Picture9_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As
Single)
Если нажата кнопка мышки, то перемещаем
выделенную картинку в соответствии с координатами мышки
If Button = 1 Then.Left =
Picture9.Left + X - x0.Top = Picture9.Top + Y - y0
End IfSub
Процедура Text1_Change() совершает
следующий набор действийSub Text1_Change()
Отрисовывает текст и имитирует autosize для
текстового окошка
Label1.Caption = Text1.TextLabel1.Width
+ 10 > Text1.Width Then Text1.Width = Label1.Width + 10
End Sub
Процедура Picture5_Click позволяет
выбрать толщину указанной линии:
Private Sub Picture5_Click(Index As
Integer)
Выбор толщины
линии(Index).DrawWidth
= Index + 1= 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)
Выбор цвета:Button
= 1 Then(1).BackColor = Picture6(Index).BackColor(0).BackColor = Picture6(Index).BackColor
End IfSub
Процедура Picture1_Resize()
устанавливает максимальные значения полос прокруток в соответствии с размером
рисунка:
VScroll1.Value = 0
Делает видимой полосу горизонтального скроллинга
при некотором условии:
If Picture1.Width >
Picture2.ScaleWidth - 17 Then.Max = Picture1.Width - Picture2.ScaleWidth + 17
HScroll1.Enabled = True
Иначе полоса горизонтального скроллинга
невидима:
HScroll1.Enabled =
FalseIfPicture1.Height > Picture2.ScaleHeight - 17 Then.Max =
Picture1.Height - Picture2.ScaleHeight + 17.Enabled = True.Enabled = False
End IfSub
Следующие процедуры реализуют команды меню
Файл,
Правка,
Изображение
Private Sub new_Click()Text1.Visible
= True Then TextExitPicture9.Visible = True Then PictureExit.Picture =
Nothing.BackColor = vbWhite.Width = 441.Height = 361(1).BackColor =
vbBlack(0).BackColor = vbWhite.Caption = "Точечный
рисунок
- GraphEdit"SubSub open_Click()Text1.Visible = True Then
TextExitPicture9.Visible = True Then PictureExitError Resume Next.ShowOpenErr
Then Exit Sub.Caption = CommonDialog1.FileTitle + " -
GraphEdit".Picture = LoadPicture(CommonDialog1.FileName)(1).BackColor =
vbBlack(0).BackColor = vbWhiteSubSub save_Click()
If Text1.Visible = True Then
TextExitPicture9.Visible = True Then PictureExit.FileName =
Left$(Form1.Caption, Len(Form1.Caption) - 12)Error Resume Next.ShowSaveErr Then
Exit SubCommonDialog1.FileName <> "" Then.Caption =
CommonDialog1.FileTitle + " - GraphEdit"Picture1.image, CommonDialog1.FileNameIfSubSub
print_Click()Text1.Visible = True Then TextExitPicture9.Visible =
True Then PictureExit.PaintPicture Picture1.image, 0, 0.EndDocSubSub size_Click().Text1.Text
= Picture1.Width.Text2.Text = Picture1.Height.Show vbModalSubSub clear_Click()Text1.Visible
= True Then TextExitPicture9.Visible = True Then PictureExit.Picture =
Nothing.BackColor = Picture8(0).BackColorSubSub copy_Click()Picture9.Visible
= True Then.clear.SetData Picture9.imageIfSubSub cut_Click()Picture9.Visible
= True Then.clear.SetData Picture9.image.Visible = FalseIfSubSub
paste_Click()(0).Value = True.Picture = Clipboard.GetData().Move -1,
-1Picture1.Width < Picture9.ScaleWidth Then Picture1.Width =
Picture9.ScaleWidthPicture1.Height < Picture9.ScaleHeight Then Picture1.Height
= Picture9.ScaleHeight
Picture9.Visible = TrueSub
3.3 Аппаратные и программные
средства создания и эксплуатации программного комплекса
Для функционирования программного комплекса
необходимы следующие аппаратные ресурсы:
·
Процессор - Pentium 4,
Celeron и выше;
·
Оперативная
память - 256 MB и выше;
·
Видеокарта с памятью
128
Мб
и выше;
·
Монитор
с разрешением 1024x768 и выше;
·
Жесткий
диск объемом 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.
К нему мы можем применять различные графические инструменты, такие как Кисть,
карандаш, Распылитель и т. д.
После редактирования мы можем охранить этот файл
на диске с помощью функции сохранить. После можно загрузить с помощью кнопки
открыть. Так же изображение можно вырезать, копировать и вставить. Можно
изменять размер изображения и очищать рабочее пространство.
.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. Редактировать изображение благодаря
панели инструментов
. Вырезать, копировать, а также
вставлять изображение в какой либо другой файл
. Изменять размер изображения и выводить
его на печать
. Очищать рабочее пространство, когда
это потребуется
Для решения поставленной задачи была
использована среда быстрой разработки приложений Visual
Basic.
Список ссылок
1.
Visual Basic
[Электрон. ресурс]. - Режим доступа: #"577433.files/image001.gif">
Рис.А1.
Рис.А2.
Рис.А3.
Рис.А4.
Рис.А5.
Рис.А6.
Рис.А7.
Рис А8.
Рис.А9.
Рис А10.
Рис.А11.
Рис.А12.
Рис. А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 LongDeclare 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 Longx0 As Single, y0 As Singlex1
As Single, y1 As SinglepicDrawFirst As BooleanpicDrawWidth As
IntegerpicMouseDown As BooleanSub Form_Load()i As Integeri = 0 To
15(i).BackColor = QBColor(i)(0)= 1.MouseIcon = Image5.Filter =
"*.bmp|*.bmp"SubSub PictureRedraw(Index As Integer)i As Integeri = 0
To 4i = Index Then(i).BackColor = vbHighlight(i).ForeColor =
vbHighlightText(i).BackColor = vbButtonFace(i).ForeColor =
vbButtonTextIf(i).Line (0, 4)-(41, 4)SubSub Option1_Click(Index As Integer)Case
Index1.MouseIcon = Image22.MouseIcon = Image33.MouseIcon = Image44.MouseIcon =
Image55.MouseIcon = Image60, 6 To 9.MouseIcon = Image7SelectText1.Visible =
True Then TextExitPicture9.Visible = True Then PictureExitSubSub
TextExit().Visible = FalsePicture1.Font = Text1.Font.CurrentX = Text1.Left +
2.CurrentY = Text1.Top + 2.ForeColor = Picture8(1).BackColor.Print
Text1.TextSubSub PictureExit().Visible = False.PaintPicture Picture9.image,
Picture9.Left + 1, _.Top + 1, Picture9.Width - 2, Picture9.Height - 2, _
, 0, Picture9.Width - 2,
Picture9.Height - 2SubSub Option1_GotFocus(Index As Integer).SetFocusSubSub
Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As
Single)Text1.Visible = True Then TextExitPicture9.Visible = True Then
PictureExitButton = 1 Then Picture1.ForeColor = Picture8(1).BackColor
_Picture1.ForeColor = Picture8(0).BackColorOption1(0).Value = True Or
Option1(6).Value = True Then.DrawWidth = 1.DrawMode = vbInvert.DrawStyle =
vbDotIfOption1(1).Value = True Then.DrawWidth = 5.ForeColor =
Picture8(0).BackColor.PSet (X, Y)IfOption1(2).Value = True Then.FillStyle =
0.FillColor = Picture1.ForeColorPicture1.hdc, X, Y, Picture1.Point(X, Y),
1.FillStyle = 1IfOption1(3).Value = True Then(1).BackColor = Picture1.Point(X, Y)IfOption1(4).Value
= True Then.PSet (X, Y)IfOption1(5).Value = True Then.DrawWidth = 1.Interval =
10IfOption1(7).Value = True Or Option1(8).Value = True Then.DrawMode =
vbInvertIfOption1(9).Value = True Then.AutoRedraw = False.DrawMode =
vbInvertIf= X= Y= True= TrueSubSub Picture1_MouseMove(Button As Integer, Shift
As Integer, X As Single, Y As Single)picMouseDown = False Then Exit
SubOption1(0).Value = True Or Option1(6).Value = True Or Option1(8).Value =
True ThenpicDrawFirst = False Then.Line (x0, y0)-(x1, y1),, BIf.Line (x0,
y0)-(X, Y),, BIfOption1(1).Value = True Or Option1(4).Value = True Then.Line
-(X, Y)IfOption1(3).Value = True Then(1).BackColor = Picture1.Point(X,
Y)IfOption1(5).Value = True Then= X= YIfOption1(7).Value = True
ThenpicDrawFirst = False Then.Line (x0, y0)-(x1, y1)If.Line (x0, y0)-(X,
Y)IfOption1(9).Value = True ThenpicDrawFirst = False ThenPicture1.hdc, x0, y0,
x1, y1IfPicture1.hdc, x0, y0, X, YIf= X= Y= FalseSubSub Picture1_MouseUp(Button
As Integer, Shift As Integer, X As Single, Y As Single)picMouseDown = False
Then Exit Subyt As Single, yd As Single, xl As Single, xr As
SingleOption1(0).Value = True ThenpicDrawFirst = False Then.Line (x0, y0)-(x1,
y1),, BIf.DrawMode = vbCopyPen.DrawWidth = picDrawWidth.DrawStyle = vbSolidx0 <
x1 Then xl = x0: xr = x1 Else xl = x1: xr = x0y0 < y1 Then yu = y0: yd = y1
Else yu = y1: yd = y0.Move xl - 1, yu - 1, xr - xl + 3, yd - yu +
3.Cls.PaintPicture Picture1.image, 0, 0, xr - xl + 1, yd - yu + 1, xl, yu, xr -
xl + 1, yd - yu + 1.ForeColor = Picture8(0).BackColor.DrawWidth = 1.Line (xl,
yu)-(xr, yd),, BF.DrawWidth = picDrawWidth.Visible =
True.SetFocusIfOption1(1).Value = True Then.DrawWidth =
picDrawWidthIfOption1(5).Value = True Then.DrawWidth = picDrawWidth.Interval =
0IfOption1(6).Value = True ThenpicDrawFirst = False Then.Line (x0, y0)-(x1,
y1),, BIf.DrawMode = vbCopyPen.DrawWidth = picDrawWidth.DrawStyle =
vbSolid.Text = ""x0 < x1 Then xl = x0: xr = x1 Else xl = x1: xr =
x0y0 < y1 Then yu = y0: yd = y1 Else yu = y1: yd = y0.Move xl - 1, yu - 1,
xr - xl + 3, yd - yu + 3.Visible = True.SetFocusIfOption1(7).Value = True
ThenpicDrawFirst = False Then.Line (x0, y0)-(x1, y1)If.DrawMode =
vbCopyPen.Line (x0, y0)-(X, Y)IfOption1(8).Value = True ThenpicDrawFirst =
False Then.Line (x0, y0)-(x1, y1),, BIf.DrawMode = vbCopyPen.Line (x0, y0)-(X,
Y),, BIfOption1(9).Value = True ThenpicDrawFirst = False ThenPicture1.hdc, x0,
y0, x1, y1If.DrawMode = vbCopyPen.AutoRedraw = TruePicture1.hdc, x0, y0, X,
Y.RefreshIf= FalseSubSub Timer1_Timer()i As Integeri = 1 To 10.PSet (x0 - 5 +
Int(Rnd * 11), y0 - 5 + Int(Rnd * 11)), Picture1.ForeColorSubSub
Picture9_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As
Single)= X= YButton = 2 Then PopupMenu editSubSub Picture9_MouseMove(Button As
Integer, Shift As Integer, X As Single, Y As Single)Button = 1 Then.Left =
Picture9.Left + X - x0.Top = Picture9.Top + Y - y0IfSubSub
Text1_Change().Caption = Text1.TextLabel1.Width + 10 > Text1.Width Then
Text1.Width = Label1.Width + 10SubSub Picture5_Click(Index As Integer)(Index).DrawWidth
= Index + 1= Index + 1SubSub Picture6_MouseDown(Index As Integer, Button As
Integer, Shift As Integer, X As Single, Y As Single)Button = 1
Then(1).BackColor = Picture6(Index).BackColor(0).BackColor =
Picture6(Index).BackColorIfSubSub Picture1_Resize().Value = 0.Value =
0Picture1.Width > Picture2.ScaleWidth - 17 Then.Max = Picture1.Width -
Picture2.ScaleWidth + 17.Enabled = True.Enabled = FalseIfPicture1.Height >
Picture2.ScaleHeight - 17 Then.Max = Picture1.Height - Picture2.ScaleHeight + 17.Enabled
= True.Enabled = FalseIfSubSub VScroll1_Change().Top = -VScroll1.ValueSubSub
VScroll1_Scroll().Top = -VScroll1.ValueSubSub HScroll1_Change().Left =
-HScroll1.ValueSubSub HScroll1_Scroll().Left = -HScroll1.ValueSubSub
new_Click()Text1.Visible = True Then TextExitPicture9.Visible = True Then
PictureExit.Picture = Nothing.BackColor = vbWhite.Width = 441.Height =
361(1).BackColor = vbBlack(0).BackColor = vbWhite.Caption = "Точечный
рисунок
- GraphEdit"SubSub open_Click()Text1.Visible = True Then TextExitPicture9.Visible
= True Then PictureExitError Resume Next.ShowOpenErr Then Exit Sub.Caption =
CommonDialog1.FileTitle + " - GraphEdit".Picture =
LoadPicture(CommonDialog1.FileName)(1).BackColor = vbBlack(0).BackColor =
vbWhiteSubSub save_Click()Text1.Visible = True Then TextExitPicture9.Visible =
True Then PictureExit.FileName = Left$(Form1.Caption, Len(Form1.Caption) -
12)Error Resume Next.ShowSaveErr Then Exit SubCommonDialog1.FileName <>
"" Then.Caption = CommonDialog1.FileTitle + " -
GraphEdit"Picture1.image, CommonDialog1.FileNameIfSubSub
print_Click()Text1.Visible = True Then TextExitPicture9.Visible = True Then
PictureExit.PaintPicture Picture1.image, 0, 0.EndDocSubSub
size_Click().Text1.Text = Picture1.Width.Text2.Text = Picture1.Height.Show vbModalSubSub
clear_Click()Text1.Visible = True Then TextExitPicture9.Visible = True Then
PictureExit.Picture = Nothing.BackColor = Picture8(0).BackColorSubSub
copy_Click()Picture9.Visible = True Then.clear.SetData Picture9.imageIfSubSub
cut_Click()Picture9.Visible = True Then.clear.SetData Picture9.image.Visible =
FalseIfSubSub paste_Click()(0).Value = True.Picture = Clipboard.GetData().Move
-1, -1Picture1.Width < Picture9.ScaleWidth Then Picture1.Width =
Picture9.ScaleWidthPicture1.Height < Picture9.ScaleHeight Then
Picture1.Height = Picture9.ScaleHeight.Visible = TrueSub