Форум программистов, компьютерный форум CyberForum.ru

Простейший графисеский редактор - C++

Восстановить пароль Регистрация
 
Foxtrot_1
 Аватар для Foxtrot_1
-10 / 0 / 0
Регистрация: 14.06.2009
Сообщений: 85
29.05.2011, 10:57     Простейший графисеский редактор #1
Реализовать простейший векторный графический редактор со следующим набором функциональных возможностей:

задание цвета фона, на котором происходит рисование.
рисование точек различного цвета и размера
рисование ломаных линий различного цвета и толщины
рисование многоугольников различного цвета

размер точек и толщину линий выбирать с помощью меню из набора значений 1,3,5,7,9,11,13,15
цвета фона и рисования выбирать с помощью меню из набора цветов

сохранение полученного изображения в файле формата SVG

создание нового рисунка, т.е. удаление всех нарисованных объектов, установка переменных в начальное положение и очистка экрана цветом фона по умолчанию.

Не хочет компилироваться с помощью Make

Код
#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "glut32.lib")
#include "glut.h"
#include "stdio.h"
#include <windows.h>
#include <iostream>
#include "stdio.h"
 
 float width=640,height=480;
void init()
{
        glViewport(0.f,0.f,(GLsizei)width, (GLsizei)height);
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(0.f, (GLdouble)width/50, 0.f, (GLdouble)height/50, -1.f, 1.f);
}
 
void Display()
{
        glClearColor(0.5,0.5,0.5,0.0);                       //Цвет, в который очищается окно
        glClear (GL_COLOR_BUFFER_BIT);               		 //Очищение
                
                glColor3f(1.f,0.f,0.f);  
        /*glBegin(GL_POLYGON);   								 //Начало сцены
        glVertex3f(1.25f, 1.25f, 0.f);
        glVertex3f(3.75f, 1.25f, 0.f);
        glVertex3f(3.75f, 3.75f, 0.f);
        glVertex3f(1.25f, 3.75f, 0.f);
        glEnd();*/
        
                
                glColor3f(1.f,1.f,0.f);  
        glPointSize(5.f);
        glBegin(GL_POINTS);
                glVertex3f(4.f, 4.25f, 0.f);
                glVertex3f(-4.f, 4.25f, 0.f);
        glEnd();                         
                
   glFlush();
 
}
 
void MouseEvent(int button, int state, int x, int y)
{
        printf("%d %d\n", x, y);
}
 
void MenuEvent(int element)
{
        printf("%d\n", element);
}

int main(int argc, char** argv)
 
{
		int MenuMain, MenuColor, MenuType, MenuTypePaint, MenuSize, MenuLineType;
		MenuType = glutCreateMenu(Menu_Type); //Создание меню Type
		glutAddMenuEntry("Point", 1);
		glutAddMenuEntry("Line", 2);
		glutAddMenuEntry("Strip", 3);
		glutAddMenuEntry("Polygon", 4);
		
		MenuMain = glutCreateMenu(Menu_Main); //Главное меню
		glutAddSubMenu("Color", MenuColor);
		glutAddSubMenu("Type", MenuType);
		glutAddSubMenu("TypePaint", MenuTypePaint);
		glutAddMenuEntry("Save file as...", 3);
		glutAddMenuEntry("Settings by defaunt", 4);
		glutAddMenuEntry("Exit", 5);
		glutAttachMenu(GLUT_RIGHT_BUTTON);
		
		glutMainLoop();
		
}

void Menu_Type(int value) //Меню выбора типа примитивов

{

}

CHOOSECOLOR cc; // common dialog box structure
static COLORREF acrCustClr[16]; // array of custom colors
HWND hwnd; // owner window
HBRUSH hbrush; // brush handle
static DWORD rgbCurrent;

void Menu_Color(int value) //Меню цвета
{
ZeroMemory(&cc, sizeof(cc));
cc.lStructSize = sizeof(cc);
cc.hwndOwner = hwnd;
cc.lpCustColors = (LPDWORD) acrCustClr;
cc.rgbResult = rgbCurrent;
cc.Flags = CC_FULLOPEN | CC_RGBINIT;

if (ChooseColor(&cc)==TRUE) //Откратия "ColorDialog"
{
hbrush = CreateSolidBrush(cc.rgbResult);
rgbCurrent = cc.rgbResult;
switch(value)
{
case(1) : R = (float) GetRValue(rgbCurrent) / 255; //Установка цвета приметивов
G = (float) GetGValue(rgbCurrent) / 255;
B = (float) GetBValue(rgbCurrent) / 255; break;
case(2) : Rbg = (float) GetRValue(rgbCurrent) / 255; //Установка цвета окна
Gbg = (float) GetGValue(rgbCurrent) / 255;
Bbg = (float) GetBValue(rgbCurrent) / 255; break;
};

glutPostRedisplay();
};
}; //void Menu_Color(int value)

void FuncSave() //Функция сохранения данных в файл
{
OPENFILENAME ofn;
char szFile[260];
HWND hwnd;
HANDLE hf;

ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = szFile;

ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;

if (GetSaveFileName(&ofn) == TRUE)
{
FILE *out;
out = fopen(szFile, "w");

  ...
};

glutPostRedisplay();
}; //void FuncSave()
 
int main(int argc, char* argv[])
{
        //Инициализация glut
       
	   glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
        glutInitWindowSize(width, height);
        glutInitWindowPosition(100, 100);
        glutCreateWindow("qwe");
        init();
        glutMouseFunc(MouseEvent);
        glutDisplayFunc(Display);
        
        int submenu = glutCreateMenu(MenuEvent);
        glutAddMenuEntry("11", 11);
        glutAddMenuEntry("22", 22);
        
        int g = glutCreateMenu(MenuEvent);
        glutAddMenuEntry("1", 1);
        glutAddMenuEntry("2", 2);
        glutAddSubMenu("3", submenu);
        glutAttachMenu(GLUT_RIGHT_BUTTON);
 
        glutMainLoop();
 
        return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2011, 10:57     Простейший графисеский редактор
Посмотрите здесь:

Простейший счетчик C++
Простейший калькулятор C++
C++ Простейший класс
C++ простейший калькулятор
Простейший код C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
adico
13 / 13 / 1
Регистрация: 24.02.2011
Сообщений: 64
29.05.2011, 13:10     Простейший графисеский редактор #2
что хоть пишет?

Добавлено через 4 минуты
Какой смысл плодить темы. Как я понимаю эта тоже вашаПостроения на плоскости
Foxtrot_1
 Аватар для Foxtrot_1
-10 / 0 / 0
Регистрация: 14.06.2009
Сообщений: 85
29.05.2011, 13:21  [ТС]     Простейший графисеский редактор #3
Ругается сборщик Make
Миниатюры
Простейший графисеский редактор  
adico
13 / 13 / 1
Регистрация: 24.02.2011
Сообщений: 64
29.05.2011, 13:34     Простейший графисеский редактор #4
Воспользуйтесь переводчиком. И все поймете. Если нет, то сначало рид пару книжек по opengl и с++
Foxtrot_1
 Аватар для Foxtrot_1
-10 / 0 / 0
Регистрация: 14.06.2009
Сообщений: 85
30.05.2011, 23:48  [ТС]     Простейший графисеский редактор #5
Воспользуйтесь переводчиком. И все поймете. Если нет, то сначало рид пару книжек по opengl и с++
Остроумно.
Qwerty_coder
29 / 29 / 2
Регистрация: 14.12.2009
Сообщений: 79
31.05.2011, 00:00     Простейший графисеский редактор #6
на Qt писал похожее, нужен исходник?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2011, 09:42     Простейший графисеский редактор
Еще ссылки по теме:

C++ Простейший список
C++ Простейший текстовый редактор стандартными средствами c++
Простейший текстовый редактор в консоли C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
adico
13 / 13 / 1
Регистрация: 24.02.2011
Сообщений: 64
31.05.2011, 09:42     Простейший графисеский редактор #7
Цитата Сообщение от Foxtrot_1 Посмотреть сообщение
int main(int argc, char* argv[])
{
//Инициализация glut
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(width, height);
glutInitWindowPosition(100, 100);
glutCreateWindow("qwe");
init();
glutMouseFunc(MouseEvent);
glutDisplayFunc(Display);
int submenu = glutCreateMenu(MenuEvent);
glutAddMenuEntry("11", 11);
glutAddMenuEntry("22", 22);
int g = glutCreateMenu(MenuEvent);
glutAddMenuEntry("1", 1);
glutAddMenuEntry("2", 2);
glutAddSubMenu("3", submenu);
glutAttachMenu(GLUT_RIGHT_BUTTON);
glutMainLoop();
return 0;
}
Цитата Сообщение от Foxtrot_1 Посмотреть сообщение
int main(int argc, char** argv)
{
int MenuMain, MenuColor, MenuType, MenuTypePaint, MenuSize, MenuLineType;
MenuType = glutCreateMenu(Menu_Type); //Создание меню Type
glutAddMenuEntry("Point", 1);
glutAddMenuEntry("Line", 2);
glutAddMenuEntry("Strip", 3);
glutAddMenuEntry("Polygon", 4);
MenuMain = glutCreateMenu(Menu_Main); //Главное меню
glutAddSubMenu("Color", MenuColor);
glutAddSubMenu("Type", MenuType);
glutAddSubMenu("TypePaint", MenuTypePaint);
glutAddMenuEntry("Save file as...", 3);
glutAddMenuEntry("Settings by defaunt", 4);
glutAddMenuEntry("Exit", 5);
glutAttachMenu(GLUT_RIGHT_BUTTON);
glutMainLoop();
}
Аш 2 функции мэин. Как вам помогать если вы даже ни одной книги не открывали по с++. А за opengl взялись. Думаете осилите? И даже если вам напишут, что это изменит?
Yandex
Объявления
31.05.2011, 09:42     Простейший графисеский редактор
Ответ Создать тему
Опции темы

Текущее время: 02:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru