Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Технологии программирования > Программирование графики
Перезагрузить страницу Рисование мышей в Opengl
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Dark19 Dark19 вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.05.2011
По умолчанию Рисование мышей в Opengl - 12.05.2011, 19:00

Мне нужно сделать прогу типа Paint. Я с помощью glutMotionFunc сделал чтобы рисовалась линия и ее можно было крутить и растягивать как пожелаешь, но когда рисуешь вторую линию, первая пропадает. Как сделать чтоб первая и все последующие линии оставались (чтоб ими можно было рисовать). Вот код, подскажите что может поменять или добавить

cpp Код:
#include <windows.h>
#include <iostream>
#include "GL/gl.h"
#include "GL/glu.h"
#include "GLAUX.h"
#include <glut.h>
using namespace std;
int x=0,b=0;
int x1,x2;
int y=0,c=0;
int z,z1;
bool down=false, l=false;
unsigned char kei;
void keyboard ( unsigned char key, int x, int y)
{
     switch (key)
          {

                case 'q':

                exit(0);

                break;
     }
}


      void reshape(int w, int h)
       {
            glViewport(0, 0, w, h);
     
            glMatrixMode(GL_PROJECTION);
            glLoadIdentity();

            gluOrtho2D(0, w, h, 0);
             
            glMatrixMode(GL_MODELVIEW);
            glLoadIdentity();
      }


void mouse(int button, int state, int ax, int ay)
{
    if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
    {
        down=true;
        l=true;
    }
    else
    {
        down=false;
        l=false;
    }
    x=ax;
    y=ay;
    cout<<x<<"  ";
    cout<<y<<endl;


}
void motion(int ax, int ay)
{
    x1=x;
    z=y;
    if (!l)
    {
        x1=ax;
        z=ay;
    }
    else
    {
        x2=ax;
        z1=ay;
    }

    b=ax;
    c=ay;
   
}

void Draw()
{
   
    glClear (GL_COLOR_BUFFER_BIT);
    glLineWidth(5);
    glBegin (GL_LINES);
    glColor3f (0.0, 1.0, 0.0);
    glVertex2f (x1, z);
    glVertex2f (x2, z1);
    //glVertex2f (x2, z1);
    //glVertex2f (x1, z1);

        glColor3f (0.0, 1.0, 0.0);
    glBegin (GL_LINES);

        glVertex3f (100, 900, 0.0);
        glVertex3f (100, 0, 0.0);

    glEnd();
    glutSwapBuffers();
glutPostRedisplay();
}
void timer(int=0)
{
    Draw();
   

    glutTimerFunc (1,timer,0);

}
void Initialize()
{
    glClearColor (1.0, 1.0, 1.0, 1.0);
    glMatrixMode (GL_PROJECTION);
    glLoadIdentity();
    glOrtho (0, 1280, 1024, 0, -1, 1);
   
}
int main(int iArgc,char** cppArgv)
{
   
   
       
                glutInit (&iArgc, cppArgv);
                glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);
               
                glutInitWindowPosition (0, 0);
                glutCreateWindow ("GRAF");
                Initialize();
                glutFullScreen();
            glutReshapeFunc (reshape);
                glutMouseFunc(mouse);
                glutDisplayFunc (Draw);
                glutKeyboardFunc(keyboard);
               
              glutMotionFunc(motion);
              //glutPassiveMotionFunc(motion);
        timer();
           
                glutMainLoop ();
                glutSwapBuffers();

       
   
       
        cin.get();
        cin.get();
}
Ответить с цитированием
  (#2 (permalink)) Старый
wanja wanja вне форума
Member
 
Сообщений: 585
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 08.05.2005
По умолчанию 13.05.2011, 12:38

Запоминать в массивчике, например.
Ответить с цитированием
  (#3 (permalink)) Старый
Dark19 Dark19 вне форума
Новичок
 
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.05.2011
По умолчанию 13.05.2011, 19:32

Цитата:
Сообщение от wanja Посмотреть сообщение
Запоминать в массивчике, например.
Вот точки с функции mouse могу запомнит в массив, но с функции motion нет, потому что motion выдает много координат по x и y, и я не могу узнать какой именно заканчивается линия и нарисовать ее с массива. Может кто подскажет как сделать или даст пример?
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Коврик Defender для лазерных мышей PolinaX Устройства ввода 3 13.01.2012 23:17
Рисование Bars777 .NET 1 22.09.2011 02:08
Рисование в GraphABC Наташок Pascal 0 03.01.2011 15:58
Рисование в Blender с помощью OPENGL Bill204 Python 0 12.12.2010 17:50
Рисование кубиков fredwriter Pascal 12 01.04.2010 12:33
Рисование в VB senon_evero Visual Basic 2 08.03.2007 13:47
Рисование графиков в С++ imported__Sergey_ Вопросы начинающих программистов 0 18.10.2006 02:16
Рисование в формах С# MuraVei .NET 3 04.01.2006 12:27
Рисование линий ReMY Программирование графики 0 28.07.2005 18:46
Рисование в текстуру Fester Программирование графики 5 20.03.2005 19:58
Рисование на экране... Кост Visual Basic 6 29.10.2004 23:37
Рисование битмапа на С++ TNT Visual C++ 1 28.05.2004 15:05



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов