Разработка программы "Графический редактор"

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Міністерство освіти і науки, молоді і спорту України

Донецький національний університет

Кафедра КОМП’ЮТЕРНИХ технологій

Курсова робота

Тема: «Розробка програми «Графічний редактор»

Виконавець:

студент 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

ПоказатьСвернуть
Заполнить форму текущей работой