• Martes 5 de Noviembre de 2024, 17:17

Autor Tema:  Re: LLevo semanas y no lo consigo help  (Leído 2633 veces)

Arkham

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: LLevo semanas y no lo consigo help
« en: Viernes 3 de Mayo de 2002, 07:26 »
0
necesito poder dibujar una linea con el mouse. ya tengo dado de alta el mouse, pero tiene ke esperar un clic para dibujar y no puedo hacer siga dibujando la linea hasta ke yo pulse clic. u otro boton..

ya ke necesito saber kuantas lineas he dibujado es para mi proyecto de tesis estoy desarrollando un sistemas de grafos
gracias kualkier ayuda ke se me pueda ortorgar

dheak

  • Miembro activo
  • **
  • Mensajes: 62
    • Ver Perfil
Re: LLevo semanas y no lo consigo help
« Respuesta #1 en: Viernes 3 de Mayo de 2002, 19:03 »
0
Vamos a ver, no se muy bien que es lo que quieres que haga tu programa.

Que es lo que quieres hacer, que una linea se dibuje mientras mantienes apretado el boton del mouse y lo vas moviendo, y se deje de dibujar cuando el boton se suelte (tal y como lo hace, por ejemplo, el programa paint).

O, por el contrario, haces un click, se empieza a dibujar la linea y, cuando vuelves a hacer otro click se deja de dibujar (este segundo metodo es mas sencillo).

Saludos.

Arkham

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: LLevo semanas y no lo consigo help
« Respuesta #2 en: Viernes 3 de Mayo de 2002, 23:04 »
0
bien antes ke nada gracias por tomarte la molestia de kontestarme.. y lo ke necesito ke haga mi programa es ke simule un tanto a paint.. komo tu lo suguieres.. pero komo tengo ke dibujar grafos aveces entre estos hay un nodo y no puedo dibujar una raya atraves de este, asi ke si me sirviria mucho, el komo poder dibujar una linea kon el mouse... de un punto a otro de manera arbirtraria..

kualkier programa ke me puedas mandar..para poder estudiar esto.. seria de gran ayuda.. de nuevo gracias..

Atte. you Frield.-.. Arkham

Agc

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: LLevo semanas y no lo consigo help
« Respuesta #3 en: Domingo 5 de Mayo de 2002, 02:02 »
0
Bueno, lo que tienes que hacer es que cuando des un clic al ratón no se dibuje algo, sino que se vaya "actualizando" con la posición x y y (sus coordenadas) del ratón. Debes utilizar las coordenadas proporcionadas por el ratón para ir actualizando el dibujo, de tal manera que mientras esté presionado el boton la línea no se dibuje, solo se visualice, y cuando sueltes el ratón ésta se dibuje. Yo lo he hecho en Delphi usando MoveTo() y LineTo(), pero desconozco como hacerlo en C. Espero haberte explicado bién la lógica del como hacerlo.

dheak

  • Miembro activo
  • **
  • Mensajes: 62
    • Ver Perfil
LLevo semanas y no lo consigo help
« Respuesta #4 en: Viernes 10 de Mayo de 2002, 21:18 »
0
eh! a las guenas noches!

Bueno te he hecho un pequeño programilla que te dibuja una linea con el mouse. El metodo utilizado es "algo" (por no decir mucho) chapucero, pero imagino que funcionara. No lo he compilado, ya que usa alguna libreria (dos.h) la cual no puedo utilizar. En principio, debe funcionar con el Turbo C.

Bueno existe otro metodo mejor que es programando las interrupciones del mouse, pero es mucho mas complicado y me temo que ahi solo te puedo ayudar explicandote el metodo, pero de codigo nada.

Bueno espero que te sirva. Si no te funciona me das el toque y lo miro. Saludos.


#include <dos.h>
#include <stdio.h>

/* modo grafico 13h y modo consola */

#define MOD_GRAF 8
#define MOD_TEXT 1

void mostrar(void);
int xpos(int modo);
int ypos(int modo);
int click(void);
void inimodo(char mode);

union REGS reg;

void main()
{
        int x, y, a;
        int color;
        inimodo(0x13);
        color = 1; /* creo que el azul */
        while ((a = click()) != 1); /* mientras el boton izquierdo no sea presionado */
        /* mientras el boton siga presionado pinta un pixel el la posicion del mouse */
        do
        {
                x = xpos(MOD_GRAF);
                y = ypos(MOD_GRAF);
                putpixel(x,y,color);
        } while ((a = click()) == 1);
}

void inimodo(char mode)
{
        /* se puede utilizar el initgraph() de to la vida */
        asm xor ah, ah
        asm mov al, mode
        asm int 10h
}

int xpos(int modo)
{
        /* devuelve la coordenada x del mouse */
   reg.x.ax = 0x3;
   int86(0x33, ®, ®);
   return reg.x.cx/modo;
}

int ypos(int modo)
{
        /* devuelve la coordenada y del mouse */
        reg.x.ax = 0x3;
   int86(0x33, ®, ®);
   return reg.x.dx/modo;
}

int click(void)
{
        /* devuelve si hay algun boton presionado, 0 = no, 1 = izquierdo, 2 = derecho */
        int r = 0;
   reg.x.ax = 0x5;
   reg.x.bx = 0;
   int86(0x33, ®, ®);
   if ((reg.x.ax) & 1) r = 1;
   else if ((reg.x.ax>>1) & 1) r = 2;
   return r;
}

void mostrar(void)
{
        /* muestra el puntero de la rata */
        reg.x.ax = 0x1;
   int86(0x33, ®, ®);
}