Растровый графический редактор
Приложение 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("ec. 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;
}
Похожие статьи
-
Блок-схема алгоритма - Основные типы графических редакторов
РЕАЛИЗАЦИЯ Для реализации приложения был использован языка программирования C++. Код получившейся программы представлен ниже: Код в файле Unit1.h:...
-
Составьте программу для реализации графического редактора линий, изображенного на рисунке 1.1.: Рисунок 1.1. - Пример работы Целью данной работы является...
-
Форматы файлов для хранения растровых графических изображений - Обзор графических редакторов
Как правило, файлы для хранения растровых графических изображений логически состоят из двух частей: заголовка и области данных. В заголовке указаны...
-
Виды графических редакторов - Обзор графических редакторов
Для обработки изображений на компьютере используются специальные программы - графические редакторы. Графический редактор - это программа создания,...
-
Основные функции графического редактора, Литература - Обзор графических редакторов
Работа в графическом редакторе относится к технологии обработки графики. Для некоторого обобщенного графического редактора характерно выполнение...
-
Графический редактор Paint - Операционная система Windows
Программа Paint - сравнительно простой графический редактор, который входит в комплект поставки Windows 95/98 и Windows NT. Программа Paint позволяет...
-
Фрактал - это рисунок, который состоит из подобных между собой элементов. Существует большое количество графических изображений, которые являются...
-
Растровая графика оперирует с изображениями в виде растров. Неформально можно сказать, что растр - это описание изображения на плоскости путем разбиения...
-
ВВЕДЕНИЕ - Основные типы графических редакторов
Алгоритм программирование редактор графический Компьютерная графика - это специальная область информатики, изучающая методы и средства создания и...
-
Под термином графика обычно понимается визуальное (то есть воспринимаемое зрением) представление каких-либо реальных или воображаемых объектов. Графика...
-
Среда графического редактора - Обзор графических редакторов
Пользовательский интерфейс большинства графических редакторов организуется следующим образом. С левой стороны экрана располагается набор пиктограмм...
-
Пример с tegview ¦ L-- qml ¦ +-- tegrender. js ¦ L-- tegview. qml +-- tegview ¦ +--...
-
Каждый из видов графики имеет свои достоинства и недостатки, следует отметить определенную "зеркальность" их достоинств и недостатков. Среди достоинств...
-
Заключение, Список литературы - Основы работы с графическим редактором AutoCAD
С помощью программы AutoCAD 2006 можно создавать чертежи, необходимые как в гражданских целях, так и в военных. Программа содержит насыщенный набор...
-
Введение, ХОД РАБОТЫ - Основы работы с графическим редактором AutoCAD
Что же такое программа AutoCAD 2006? Это традиционное проектирование, визуализация, выпуск документации и воплощение ваших идей эффективно и в полном...
-
ТЕСТИРОВАНИЕ, ЗАКЛЮЧЕНИЕ - Основные типы графических редакторов
Скриншоты, демонстрирующие работу программы представлены ниже на рисунках 4.1., 4.2., 4.3. и 4.4.: Рисунок 4.1 - Интерфейс и результат работы программы...
-
Кодирование цвета Кодируется цвет графических изображений с помощью бит. Количество бит, с помощью которых закодирован цвет называют битовой глубиной...
-
Введение - Обзор графических редакторов
Представление данных на мониторе компьютера в графическом виде впервые было реализовано в середине 50-х годов для больших ЭВМ, применявшихся в научных и...
-
Visual component library graphics Цель работы: изучение графических возможностей стандартной библиотеки визуальных компонентов VCL, функций и процедур...
-
Модуль Редактор Рассмотрим макеты интерфейса основных функциональных элементов локального приложения, которые отражают расположение основных элементов...
-
Поиск файлов - Текстовый редактор Word, электронная таблица Excel
Поиск возможен в заголовках, содержимом или свойствах файлов Microsoft Office. На панели инструментов Стандартная нажмите кнопку Найти. Импорт текстового...
-
Современные текстовые редакторы
Microsoft Word 6.0а. Microsoft Word, версии 6.0а, был создан: 1993-1994 Microsoft Corporation, International CorrectSpell, Inernational Hyphenator 1994...
-
Графический интерфейс Windows - Графический интерфейс операционной системы Windows
Графический интерфейс позволяет осуществлять взаимодействие человека с компьютером в форме диалога с использованием окон, меню и элементов управления...
-
Сообщения системы, Системные требования, Элементы управления - Разработка визуального редактора
Главные сообщения пользователю представлены отдельными диалоговыми окнами, появляющимися на главном окне после определенных действий. Если пользователь...
-
Выделение текста и рисунков - Текстовый редактор Word, электронная таблица Excel
Для выделения текста и рисунков, включая элементы, не расположенные в непосредственной близости друг от друга, можно использовать как мышь, так и...
-
Для создания нового сайта используем пункт меню "ФайлСоздатьСтраница или веб-узел". При этом появляется окно для выбора типа сайта (см. рис.). Кроме...
-
Некоторые WWW browser позволяют пользователю, заполнив специальную форму, возвращающую полученное значение, выполнять некоторые действия на вашем...
-
Текстовый редактор WORD - Текстовый редактор Word, электронная таблица Excel
Создание документа На панели инструментов Стандартная нажмите кнопку Создать. Панель инструментов - панель с кнопками и параметрами, которые используются...
-
- рисуем графический примитив, например, эллипс у рыбки; - накладываем сверху на эллипс другой графический объект так, чтобы он закрывал часть эллипса; -...
-
- установить свойство Align в значение AlBottom ; - выбрать свойство Panels и с помощью кнопки в левом верхнем углу разбить панель на две части (рисунок...
-
Графические возможности Delphi - Разработка Windows-приложений в среде Borland Delphi
Цель Работы: Получить навыки использования в приложении битовых образов. Пояснения к работе Эффект перемещения сложной картинки может быть создан путем...
-
В длинных документах большинство абзацев форматируется одинаково. Точнее говоря, обычно существует несколько вариантов оформления абзаца, которые...
-
Вы можете открыть данную оснастку несколькими способами: 1. Нажмите на кнопку "Пуск" для открытия меню, в поле поиска введите Редактор локальной...
-
Литература, Текст программы - Разработка визуального редактора
1. Методические указания по выполнению курсовых и дипломных проектов. Специальность: 2-40 02 01 "Программное обеспечение информационных технологий"; 2....
-
Знакомство с графическим интерфейсом Windows - Графический интерфейс операционной системы Windows
1. Создать на Рабочем столе ярлыки всех дисков, принтера и сканера. Создать ярлыки часто используемых приложений и документов. Внешний вид графического...
-
Система ABBY FineReader - Текстовый редактор Word, электронная таблица Excel
Как ввести документ за минуту 1. Включите сканер (если он имеет отдельный от компьютера источник питания). Внимание! Многие модели сканера необходимо...
-
Предварительный просмотр и печать - Текстовый редактор Word, электронная таблица Excel
CTRL+P или CTRL+SHIFT+F12 Отображение диалогового окна Печать. Используйте следующие клавиши в режиме предварительного просмотра (для перехода в режим...
-
Интерфейс Windows forms - Разработка визуального редактора
Windows Forms - интерфейс программирования приложений (API), отвечающий за графический интерфейс пользователя и являющийся частью Microsoft. NET...
-
Текстовый редактор Microsoft Word 2003 - Технология обработки текстовой информации
Текстовый редактор Microsoft Word на сегодняшний день является одной из лучших профессиональных программ для обработки текста. Он также представляет...
-
Библиотека MSHTML MSHTML (так же известен как Trident) - браузерный движок для Microsoft Internet Explorer. Впервые Trident был реализован в четвертой...
Растровый графический редактор