Растровый графический редактор

Разработка упрощенного графического редактора Paint cо следующими возможностями: рисование точек, линий и прямоугольников (заполненных и нет); выбор цветов рисования и заполнения из 16 или более, запись рисунка в стандартном или собственном формате.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 11.07.2012
Размер файла 271,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Федеральное агентство по образованию

Государственное образовательное учреждение

высшего профессионального образования

«Южно-Уральский государственный университет»

Кафедра "Прикладной математики"

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

по дисциплине «Объектно-ориентированное программирование»

на тему «Растровый графический редактор»

Выполнила: студентка группы ММ-223

Абдушукурова К.М.

Проверил: Демидов А.К. ____________

ЧЕЛЯБИНСК - 2009

Содержание

Постановка задачи

Описание программы

Используемые внешние файлы. Форматы файлов

Инструкция по установке и требования к компьютеру

Инструкция пользователя

Приложение 1. Исходные тексты программы

1. Постановка задачи

Растровый графический редактор

Разработать упрощенный графический редактор Paint cо следующими

возможностями:

- рисование точек (свободное рисование)

- рисование линий

- рисование прямоугольников (заполненных и нет)

- выбор цветов рисования и заполнения из 16 или более

- чтение и запись рисунка в стандартном (.BMP,.PCX,.JPG) или собственном формате

При движении мыши высвечивать координаты и размеры.

2. Описание программы

Сначала рисуем палитру с кнопками с помощью классов. Далее запускается цикл обработки нажатия кнопок мыши. В программе использовались библиотеки winbgim. В работе 5 классов:

Класс base - базовый для всех класс. В нём содержатся параметры x и y - координаты базовой точки объекта (верхняя левая точка), size - размер объекта (длина, ширина). Функции:

bool check(int x, int y) - проверяет попадает ли курсор с координатами x, y на объект

virtual void draw() - рисует объект

virtual void LeftB() - обработка нажатия левой кнопки мыши

virtual void RightB() - обработка нажатия правой кнопки мыши

Класс Pallet - палитра. с - номер цвета элемента палитры. Функции:

void LeftB() - обработка нажатия левой кнопки мыши

void RightB() - обработка нажатия правой кнопки мыши

void draw() - рисует объект

void set(int xx, int yy, int cc) - изменяет значения параметров x,y,c

Класс Button - кнопки для рисования. act - номер действия соответствующего кнопке (0-свободное рисование, 1- рисование линий, 2- рисование не заполненных прямоугольников, 3- рисование заполненных прямоугольников). Функции:

void draw() - рисует объект

void LeftB() - обработка нажатия левой кнопки мыши

void set(int xx, int yy, int aact) - изменяет значения параметров x,y,act

void select() - выделяет объект при попадании на него курсором мыши

Класс File - кнопки для работы с файлами. f - номер соответствующего кнопке (1 - запись рисунка, 0 - чтение рисунка). Функции:

void draw() - рисует объект

void LeftB() - обработка нажатия левой кнопки мыши

void set(int xx, int yy, int aact) - изменяет значения параметров x,y,act

void select() - выделяет объект при попадании на него курсором мыши

Класс Field - поле рисования. Функции:

void draw() - рисует объект

void LeftB() - обработка нажатия левой кнопки мыши

void RightB() - обработка нажатия правой кнопки мыши

Глобальные переменные:

COL - основной цвет рисования

FCOL - цвет заливки (или рисования правой кнопкой)

ACTION - номер выполняемого действия

dx, dy - смещение.

Глобальная функция:

position(int x, int y) - высвечивает координаты мыши

Классы Pallet, Button, File, Field являются производными от класса base.

3. Используемые внешние файлы. Форматы файлов

Программа может сохранять файлы в стандартном (.BMP,.PCX,.JPG) формате, и загружать их из папки.

Программа использует файлы:

Line.bmp - картинка для рисования кнопки линии

Rec.bmp - картинка для рисования кнопки не заполненного прямоугольника

Frec.bmp - картинка для рисования кнопки заполненного прямоугольника

Pen.bmp - картинка для рисования кнопки свободного рисования

Load.bmp - картинка для рисования кнопки записи файла

Save.bmp - картинка для рисования кнопки чтения файла

Все картинки имеют размер 19x19

4. Инструкция по установке и требования к компьютеру

Требования к компьютеру :

Операционная система -Wndows XP Professional

Необходимое место на жестком диске - 992 КБ

Минимальные требования к быстродействию процессора - тактовая частота не ниже 100 кГц

Минимальные требования к ОЗУ - не ниже 64 мб

Минимальные требования к видеокарте - не хуже GeForceMx440, не ниже 16мб

Дополнительные устройства - мышь

Для того чтобы установить программу с дискеты, достаточно просто скопировать ее на ваш жесткий диск

графический редактор рисование

5. Инструкция пользователя

6.

Чтобы запустить графический редактор нужно открыть Paint.exe. Появятся 2 окна: первое - непосредственно графическая оболочка редактора, в котором с помощью мыши рисуется изображение, второе - консоль, в которой пишется имя сохраняемого или открываемого файла. Ниже приведено детальное описание каждой кнопки редактора

Консоль сохранения/загрузки файлов.

Размещено на Allbest.ru

Приложение 1. Исходные тексты программы

#include <winbgim.h>

#include <alloc.h>

#include <stdio.h>

using namespace std;

int COL=15, //основной цвет

FCOL=0, //цвет заливки

ACTION=0; //номер действия

int dx=48,dy=1;

void position(int,int); //высвечивает координаты мыши

void position(int x,int y){

char cx[3],cy[3];

for(int i=2;i>=0;i--){

cy[i]=char(y%10+int('0'));

y=y/10;

cx[i]=char(x%10+int('0'));

x=x/10;

}

setfillstyle(1,0);

setcolor(1);

bar(0,522,550,550);

outtextxy(200,523,cx);

outtextxy(227,523,":");

outtextxy(237,523,cy);

bar(264,522,360,550);

}

//базовый класс для всех объектов

class base{

protected:

int x,y; //координаты базовой точки

int size; //размеры

public:

base(int x, int y, int size): x(x), y(y), size(size) {}

bool check(int xx, int yy); //попадает ли курсор?

virtual void draw()=0; //рисует объект

virtual void LeftB()=0; //обработка нажатия левой кнопки

virtual void RightB(){}; //обработка нажатия правой кнопки

};

bool base::check(int xx, int yy){

if(xx>=x && xx<=x+size && yy>=y && yy<=y+size) return true;

return false;

}

//класс палитра

class Pallet:public base{

int c; //номер цвета

public:

Pallet(int x=0,int y=0,int size=17,int c=0):base(x,y,size),c(c){};

void LeftB();

void RightB();

void draw();

void set(int xx, int yy, int cc){x=xx; y=yy; c=cc;}

};

void Pallet::LeftB(){

COL=c;

}

void Pallet::RightB(){

FCOL=c;

}

void Pallet::draw(){

setfillstyle(1,c);

setcolor(BLACK);

rectangle(x-1,y-1,x+size,y+size);

setcolor(WHITE);

rectangle(x,y,x+size+1,y+size+1);

bar(x,y,x+size,y+size);

}

//кнопки

class Button:public base{

int act; //номер действия соответствующего кнопке

public:

Button(int x=0,int y=0,int size=17,int act=0):base(x,y,size),act(act) {}

void draw();

void LeftB();

void set(int xx, int yy, int aact){x=xx; y=yy; act=aact;}

void select(); //выделяет кнопку при попадании на неё курсором

};

void Button::LeftB(){

setcolor(3);

rectangle(x-1,y-1,x+19,y+19);

while(mousebuttons()==1){

}

ACTION=act;

setcolor(1);

rectangle(x-1,y-1,x+19,y+19);

}

void Button::select(){

int xx=mousex();

int yy=mousey();

while(check(xx,yy) && mousebuttons()==0){

xx=mousex();

yy=mousey();

setcolor(9);

rectangle(x-1,y-1,x+19,y+19);

}

setcolor(1);

rectangle(x-1,y-1,x+19,y+19);

}

void Button::draw(){

void *ptr;

if(act==0){

ptr=loadBMP("\\pen.bmp");

}

if(act==1){

ptr=loadBMP("\\line.bmp");

}

if(act==2){

ptr=loadBMP("\\rec.bmp");

}

if(act==3){

ptr=loadBMP("\\frec.bmp");

}

putimage(x,y,ptr,AND_PUT);

}

//кнопки для работы с файлами

class File:public base{

int f; //номер действия 1-сохранение, 0-вставка

public:

File(int x=0,int y=0,int size=17,int f=0): base(x,y,size), f(f) {}

void set(int xx, int yy, int ff){x=xx; y=yy; f=ff;}

void draw();

void LeftB();

void select();

};

void File::draw(){

void *ptr;

if(f==0){

ptr=loadBMP("\\load.bmp");

}

if(f==1){

ptr=loadBMP("\\save.bmp");

}

putimage(x,y,ptr,AND_PUT);

}

void File::LeftB(){

char c[200];

void *ptr;

if(f==0){

printf("Введите адрес файла, который хотите загрузить");

scanf("%s",c);

ptr=loadBMP(c);

putimage(dx,dy,ptr,COPY_PUT);

free(ptr);

}

if(f==1){

size=imagesize(dx,dy,550+dx,520+dy);

ptr=malloc(size);

printf("Введите адрес, куда нужно сохранить файл");

scanf("%s",c);

getimage(dx, dy, 550+dx, 520+dy, ptr);

saveBMP(c, ptr, 24);

free(ptr);

}

}

void File::select(){

int xx=mousex();

int yy=mousey();

while(check(xx,yy) && mousebuttons()==0){

xx=mousex();

yy=mousey();

setcolor(9);

rectangle(x-1,y-1,x+19,y+19);

}

setcolor(1);

rectangle(x-1,y-1,x+19,y+19);

}

//поле

class Field:public base{

public:

Field(int x, int y, int size): base(x,y,size){}

void draw();

void LeftB();

void RightB();

};

void Field::draw(){

setfillstyle(1,WHITE);

bar(x,y,x+size,y+size);

}

void Field::LeftB(){

int x1, y1,xx,yy;

void *ptr;

unsigned int size;

setcolor(COL);

setfillstyle(1,FCOL);

xx=mousex()-dx;

yy=mousey()-dy;

if(ACTION==0){ //свободное рисование

moveto(xx,yy);

while(mousebuttons()==1){

x1=mousex()-dx;

y1=mousey()-dy;

setcolor(COL);

lineto(x1,y1);

if(check(x1+dx,y1+dy)) position(x1,y1);

}

xx=x1;

yy=y1;

}

else{

xx=mousex()-dx;

yy=mousey()-dy;

moveto(xx,yy);

size=imagesize(0,0,550,521);

ptr=malloc(size);

getimage(0, 0, 550, 521, ptr);

while(mousebuttons()==1){

if(x1!=mousex()-dx || y1!=mousey()-dy){

putimage(0,0, ptr, COPY_PUT);

free(ptr);

x1=mousex()-dx;

y1=mousey()-dy;

size=imagesize(0,0,550,521);

ptr=malloc(size);

getimage(0, 0, 550, 521, ptr);

setcolor(COL);

setfillstyle(1,FCOL);

if(ACTION==1){ //рисование линий

line(xx,yy,x1,y1);

}

if(ACTION==2){ //рисование незакрашенных прямоугольников

rectangle(xx,yy,x1,y1);

}

if(ACTION==3){ //рисование закрашенных прямоугольников

bar(xx,yy,x1,y1);

rectangle(xx,yy,x1,y1);

}

delay(40);

if(check(x1+dx,y1+dy)) position(x1,y1);

}

}

}

};

void Field::RightB(){

int x1, y1,xx,yy;

void *ptr;

unsigned int size;

setcolor(FCOL);

setfillstyle(1,COL);

xx=mousex()-dx;

yy=mousey()-dy;

if(ACTION==0){

moveto(xx,yy);

while(mousebuttons()==2){

x1=mousex()-dx;

y1=mousey()-dy;

setcolor(FCOL);

lineto(x1,y1);

if(check(x1+dx,y1+dy)) position(x1,y1);

}

xx=x1;

yy=y1;

}

else{

xx=mousex()-dx;

yy=mousey()-dy;

moveto(xx,yy);

size=imagesize(0,0,550,521);

ptr=malloc(size);

getimage(0, 0, 550, 521, ptr);

while(mousebuttons()==2){

if(x1!=mousex()-dx || y1!=mousey()-dy){

putimage(0,0, ptr, COPY_PUT);

free(ptr);

x1=mousex()-dx;

y1=mousey()-dy;

size=imagesize(0,0,550,521);

ptr=malloc(size);

getimage(0, 0, 550, 521, ptr);

setcolor(FCOL);

setfillstyle(1,COL);

if(ACTION==1){

line(xx,yy,x1,y1);

}

if(ACTION==2){

rectangle(xx,yy,x1,y1);

}

if(ACTION==3){

bar(xx,yy,x1,y1);

rectangle(xx,yy,x1,y1);

}

delay(40);

if(check(x1+dx,y1+dy)) position(x1,y1);

}

}

}

};

int main(){

int i,x,y;

bool Exit=true;

initwindow(600,550);

setfillstyle(1,1);

bar(1,1,45,540);

Pallet a[16]; //палитра

Field b(48,1,550); //поле рисования

File d[2]; //кнопки работы с файлами

Button c[4]; //кнопки рисования

for(i=0;i<2;i++){ //рисует кнопки

c[i].set(4,20+i*21,i);

c[i].draw();

c[i+2].set(4+21,20+i*21,i+2);

c[i+2].draw();

}

for(i=0;i<8;i++){ //рисует палитру

a[i].set(4,182+i*21,i);

a[i].draw();

a[i+8].set(4+21,182+i*21,i+8);

a[i+8].draw();

}

//рисует кнопки чтения/записи

d[0].set(4,62,0);

d[0].draw();

d[1].set(25,62,1);

d[1].draw();

//рисует кнопку выхода

setcolor(0);

outtextxy(6,3,"EXIT");

//рисует цвет фона и заливки

setcolor(COL);

rectangle(7,111,39,128);

rectangle(8,112,38,127);

rectangle(9,113,37,126);

setfillstyle(1,FCOL);

bar(10,114,36,125);

while(Exit){

x=mousex(); //считывает координаты курсора

y=mousey();

if(x>6 && x<45 && y>2 && y<20){ //обработка действий с кнопкой выхода

if(mousebuttons()==1) {Exit=false;}

else{

setcolor(9);

rectangle(3,2,44,18);

while(x>6 && x<45 && y>2 && y<20 && mousebuttons()==0){

x=mousex();

y=mousey();

}

setcolor(1);

rectangle(3,2,44,18);

}

}

for(i=0;i<16;i++){ //обработчик нажатия на кнопки палитры

if(a[i].check(x,y) && mousebuttons()==1){

a[i].LeftB();

setcolor(COL);

rectangle(7,111,39,128);

rectangle(8,112,38,127);

rectangle(9,113,37,126);

}

if(a[i].check(x,y) && mousebuttons()==2){

a[i].RightB();

setfillstyle(1,FCOL);

bar(10,114,36,125);

}

}

for(i=0;i<4;i++){ //обработчик нажатия на кнопки рисования

if(c[i].check(x,y)){

c[i].select();

if(mousebuttons()==1) c[i].LeftB();

}

}

for(i=0;i<2;i++){ //обработчик нажатия на кнопки работы с файлами

if(d[i].check(x,y)){

d[i].select();

if(mousebuttons()==1) d[i].LeftB();

}

}

if(b.check(x,y)){ //обработчик действий в поле рисования

if(mousebuttons()==1){

setviewport(dx, dy, 550+dx+1, 550+dy+1, 1);

b.LeftB();

setviewport(0,0,551,551,1);

}

if(mousebuttons()==2){

setviewport(dx, dy, 550+dx+1, 550+dy+1, 1);

b.RightB();

setviewport(0,0,551,551,1);

}

setviewport(dx, dy, 550+dx+1, 550+dy+1, 1);

position(x-dx,y-dy); //вывод координат мыши

setviewport(0,0,551,551,1);

}

delay(40);

}

closegraph();

return 0;

}


Подобные документы

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

    курсовая работа [865,0 K], добавлен 28.04.2014

  • Функционально-структурная организация персонального компьютера. Операционная система Windows. Функции стандартизации программы графического редактора Paint. Рисование геометрических объектов и оформление рисунков с помощью графического редактора Paint.

    курсовая работа [680,1 K], добавлен 03.12.2008

  • Функции графического редактора Paint. Сохранение документов, вставка, перемещение, копирование, удаление. Многократное увеличение или уменьшение инструмента. Полная палитра, выбор третьего цвета для рисования, пипетка, заливка, пользовательская кисть.

    контрольная работа [22,3 K], добавлен 27.07.2009

  • Функциональные возможности графического редактора Paint. Устройства персонального компьютера и их назначения. Стандартные программы операционной системы Windows. Приложения системы графического редактора к решению задач графики, теоретической механики.

    курсовая работа [156,5 K], добавлен 05.12.2008

  • Рассмотрение функциональных возможностей графического редактора Paint. Запуск и элементы окна. Создание и сохранение рисунка. Элементы панели инструментов и палитры цветов. Характеристика оборудования, необходимого для подключения к сети Интернет по ADSL.

    контрольная работа [3,1 M], добавлен 14.02.2012

  • Графический редактор Paint одновременно работает с двумя цветами, которые отображаются на панели слева от палитры. Один цвет рассматривается как основной, другой-как фоновый. Инструмент рисования может использоваться как основной, так и фоновый цвет.

    методичка [30,1 K], добавлен 05.10.2008

  • Изучение особенностей растровых и векторных графических редакторов. Создание графического редактора: выбор языка программирования, разработка структуры программы и алгоритма работы. Описание интерфейса программы. Руководство программиста и пользователя.

    курсовая работа [1,3 M], добавлен 28.07.2013

  • Corel Draw - профессиональный пакет для создания векторных иллюстраций с возможностями редактирования текста, макетирования и подготовки Интернет-публикаций. Технологические возможности графического редактора. Ознакомление с инструментами этой программы.

    курсовая работа [1,9 M], добавлен 31.05.2009

  • Разработка графического редактора "MyGraphicsEditor", аналогичного редактору MS Paint. Анализ предметной области по методологии объектной декомпозиции. Подготовление контрольных примеров, проведение автономного и комплексного тестирования и отладки.

    курсовая работа [2,9 M], добавлен 12.05.2015

  • Сущность, задачи и особенности объектно-ориентированного программирования. Создание и редактирование графических файлов при помощи различных инструментов рисования. Основные требования к аппаратному и программному обеспечению. Руководство пользователя.

    курсовая работа [270,9 K], добавлен 09.03.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.