Растровый графический редактор
Разработка упрощенного графического редактора 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.2013Corel Draw - профессиональный пакет для создания векторных иллюстраций с возможностями редактирования текста, макетирования и подготовки Интернет-публикаций. Технологические возможности графического редактора. Ознакомление с инструментами этой программы.
курсовая работа [1,9 M], добавлен 31.05.2009Разработка графического редактора "MyGraphicsEditor", аналогичного редактору MS Paint. Анализ предметной области по методологии объектной декомпозиции. Подготовление контрольных примеров, проведение автономного и комплексного тестирования и отладки.
курсовая работа [2,9 M], добавлен 12.05.2015Сущность, задачи и особенности объектно-ориентированного программирования. Создание и редактирование графических файлов при помощи различных инструментов рисования. Основные требования к аппаратному и программному обеспечению. Руководство пользователя.
курсовая работа [270,9 K], добавлен 09.03.2009