Материал: Отчёт

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Кыргызско-Российский Славянский университет

Кафедра информационных и вычислительных технологий

КУРСОВАЯ РАБОТА

по дисциплине «Структурное программирование»

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

Руководитель: профессор Г.А.Десятков

Выполнила: студентка группы ЕПИ-2-19 Качкынбаева М.

Руководитель: профессор Г.А.Десятков

Дата: _______________________

Оценка: _____________________

Бишкек 2022

Оглавление

ВВЕДЕНИЕ 3

РАЗРАБОТКА ПРОГРАММЫ 4

РУКОВОДСТВО ПРОГРАММИСТА 5

РЕЗУЛЬТАТ РАБОТЫ ПРОГРАММЫ И АНАЛИЗ 6

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ 6

ТЕСТИРОВАНИЕ ПРОГРАММЫ 7

ВЫВОД 7

ИСПОЛЬЗУЕМАЯ ЛИТЕРАТУРА И ИСТОЧНИКИ 7

ЛИСТИНГ ПРОГРАММЫ 7

Введение

Растровый графический редактор — специализированная программа, предназначенная для создания и обработки растровых изображений, то есть графики, которая в память компьютера записывается как набор точек, а не как совокупность формул геометрических фигур. Подобные программные продукты нашли широкое применение в обработке цифровых фотографий и применяются в работе художников-иллюстраторов, при подготовке изображений к печати типографским способом или на фотобумаге, публикации в интернете.

Растровые графические редакторы позволяют пользователю рисовать и редактировать изображения на экране компьютера, а также сохранять их в различных растровых форматах, таких как, например, JPEG и TIFF, позволяющих хранить растровую графику с незначительным снижением качества за счёт использования алгоритмов сжатия с потерями, PNG и GIF, поддерживающими хорошее сжатие без потерь, и BMP, также поддерживающем сжатие (RLE), но в общем случае представляющем собой несжатое «попиксельное» описание изображения.

В противоположность векторным редакторам, растровые используют для представления изображений матрицу окрашенных точек (bit map). Большинство современных растровых редакторов содержат векторные инструменты редактирования в качестве вспомогательных, но сохраняют изображения только в растровых форматах.

История развития компьютерной графики началось уже в 20 веке и продолжается сегодня. Не секрет то, что именно графика способствовала быстрому росту быстродействия компьютеров.

1940-1970гг. – время больших компьютеров (эра до персональных компьютеров). Графикой занимались только при выводе на принтер. В этот период заложены математические основы.

Особенности: пользователь не имел доступа к монитору, графика развивалась на математическом уровне и выводилась в виде текста, напоминающего на большом расстоянии изображение. Графопостроители появились в конце 60-х годов и практически были не известны.

1971-1985гг. – появились персональные компьютеры, т.е. появился доступ пользователя к дисплеям. Роль графики резко возросла, но наблюдалось очень низкое быстродействие компьютера. Программы писались на ассемблере. Появилось цветное изображение (256).

Особенности: этот период характеризовался зарождением реальной графики.

1986-1990гг. – появление технологии Multimedia (Мультимедиа). К графике добавились обработка звука и видеоизображения, общение пользователя с компьютером расширилось.

Особенности: появление диалога пользователя с персональным компьютером; появление анимации и возможности выводить цветное изображение.

Разработка программы

Тема работы:

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

Содержание работы:

Тема "Графический редактор" предполагает, что будет создан графический редактор со всеми возможностями, как например в Paint.

Исходные данные к курсовой работе:

Язык программирования –Cи

Режим работы программы – графический

Алгоритм работы инструмента «карандаш»

xz, yz, exit=0,

point p

Выбрано….

нет

нет

нет

нет

нет

да

да

да

да

да

нет

да

Руководство программиста

Структурная схема программного комплекса (выше) включает 15 подчиненных программных модулей, расположенных на втором и третьем уровнях. Программные модули выполняют следующие функции (в скобках указаны имена процедур):

Меню (menu)- служит для выбора пользователем требуемого инструмента;

Инструменты (tools)- средства графического взаимодействия пользователя и программы;

Доп. Функции 1(edit)- средство редактирования результата работы графического редактора (копировать/вырезать, вставить);

Доп. Функции 2(file)- средство преобразования результата работы графического редактора (удалить, сохранить, открыть);

void screen(); /// рисует экран

void file_screen(); /// рисует меню

void file_control(void *buffer); /// меню, состоящее из создания, открытия и сохранения файла

void open_file(); /// панель инструментов и реализация рисования формы

void palette(); /// рисует палитрой

char another_shape(int x, int y); /// переключение форм и инструментов

void button(int x1,int y1,int x2,int y2,int col);

void active_collor(int x,int y); /// отображает активный цвет

void returnn(); /// вернуться к open_file function

Результат работы программы и анализ

Программа работает подобно программе «Paint» от Microsoft.

Сравнение с программой Microsoft “Paint”:

Руководство пользователя

1. Чтобы нарисовать некоторые элементы, а именно овал и прямоугольник, выполнить функции вырезать и копировать – нужно: выбрать соответствующий инструмент и нажать левой кнопкой мыши для того, чтобы отметить верхнюю левую границу рисунка, а затем нажать правой кнопкой мыши для отметки правой нижней границы рисунка.

2. Заливка закрашивает только те области, которые обрамлены чёрным цветом, иначе будет закрашен весь лист.

3. Функция «сохранить как .bmp» сохраняет файл в отдельной папке.

ТЕСТИРОВАНИЕ ПРОГРАММЫ

В следствии тестирования программы было выявлено то, что программа не всегда реагирует на нажатия мышки либо тачпада. Поэтому стоит нажать несколько раз, для устранения неполадки.

ВЫВОД

В ходе выполнения курсовой работы была создана программа, которая внешним видом и функционалом напоминает «Paint» времён Windows XP. Функционал не так обширен, как у «Paint», но основные функции присутствуют.

ИСПОЛЬЗУЕМАЯ ЛИТЕРАТУРА И ИСТОЧНИКИ

1.Лекции по предмету «Структурное Программирование»;

2.Сайты:

ru.stackoverflow.com;

www.cyberforum.ru;

www.c-cpp.ru;

code-live.ru.

ЛИСТИНГ ПРОГРАММЫ

Файл «head.h»

void screen(); ///screen drawing

void file_screen(); ///context menu drawing

void file_control(void *buffer); ///context menu consisting of creating, opening and saving a file

void open_file(); ///toolbar and shape drawing implementation

void palette(); ///palette drawing

char another_shape(int x, int y); ///switching shapes and tools

void button(int x1,int y1,int x2,int y2,int col);

void active_collor(int x,int y); ///display active color

void returnn(); ///return to open_file function

extern int a,b, x, y, leftcolor[15], xr, yr, act_col, coord1, coord2, tsize;

extern char ch;

Файл «main.cpp»

#include <graphics.h>

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <malloc.h>

#include<math.h>

#include "head.h"

int a,b, xr, yr, act_col=0, coord1, coord2, tsize=3;

int x=0, y=0;

char ch;

int leftcolor[15];

int main(void)

{

initwindow(700, 540,"Windows BGI");

screen();

void *buffer;

unsigned size;

do

{

getmouseclick(WM_LBUTTONDOWN, xr,yr);

if((xr>660)&&(yr>0)&&(xr<700)&&(yr<24))

{

_Exit(0);

}

if((xr>600)&&(yr>25)&&(xr<700)&&(yr<50)) ///file button

{

size=imagesize(599, 50, 698, 167);

buffer=malloc(size);

getimage(599, 50, 698, 167, buffer);

file_screen();

file_control(buffer);

free(buffer);

}

}

while(ch!='e');

}

Файл «func.cpp»

#include <graphics.h>

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <malloc.h>

#include<math.h>

#include "head.h"

void file_control(void *buffer)

{

do

{

getmouseclick(WM_LBUTTONDOWN, x,y);

if(x>660 && x<700 && y>0 && y<24)

{

_Exit(0);

}

if(x>560 && x<698 && y>50 && y<85) /// new file

{

readimagefile("file.bmp", 3, 27, 598, 508);

putimage(599, 50, buffer, COPY_PUT);

open_file();

}

else if(x>560 && y>87 && x<698 && y<125) ///open

{

readimagefile("file1.bmp", 3, 27, 598, 508);

putimage(599, 50, buffer, COPY_PUT);

open_file();

}

else if(x>560 && x<698 && y>127 && y<170) ///save

{

writeimagefile("file1.bmp", 3, 27, 598, 508);

putimage(599, 50, buffer, COPY_PUT);

open_file();

}

}

while(ch!='e');

}

void open_file()

{

void *buffer, *buffer1;

unsigned size, size1;

int maxx, maxy;

coord1=x;

coord2=y;

maxx = getmaxx( );

maxy = getmaxy( );

setcolor(0);

setlinestyle(0,0,0);

rectangle(2, 26, 598, 508);

do

{

if(x>660 && y>0 && x<700 && y<24)

{

_Exit(0);

}

if(x>600 && x<700 && y>25 && y<50) // we press file button

{

size=imagesize(599, 50, 698, 167);

buffer=malloc(size);

getimage(599, 50, 698, 167, buffer);

file_screen();

file_control(buffer);

Источник: https://studfile.net/preview/16570293/