• Domingo 22 de Diciembre de 2024, 04:10

Autor Tema:  Ayuda Con Perl Gnome_canvas  (Leído 7864 veces)

Eddycito

  • Miembro activo
  • **
  • Mensajes: 25
    • Ver Perfil
Ayuda Con Perl Gnome_canvas
« en: Viernes 27 de Abril de 2007, 00:30 »
0
Hola Amigos necesito Ayuda.

Estoy programando en GnomeCanvas para perl, estoy poniendo unas imagenes dentro del canvas con Gnome2::Canvas::Pixbuf y todas las imagenes quiero enlazarlas con lineas, y que las linesas se redimensionen cada vez que muevo una imagen con el mouse, puedo crear las lineas pero no se como hacer que sean uno solo con las imagenes. porfa como puedo haceer esto. unsure.gif

atte eddy.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Ayuda Con Perl Gnome_canvas
« Respuesta #1 en: Viernes 27 de Abril de 2007, 00:42 »
0
Cita de: "Eddycito"
...puedo crear las lineas pero no se como hacer que sean uno solo con las imagenes. porfa como puedo haceer esto.

Esta parte no la entendi, aun asi sugiero que veas los demos o la documentacion.
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Ayuda Con Perl Gnome_canvas
« Respuesta #2 en: Viernes 27 de Abril de 2007, 00:51 »
0
Releyendo de nievo tus post...

Te pido un poco de codigo (lo que llevas) ademas hay una forma de hacerlo en Gtk2 sin usar Gnome2:

Usas formato xpm para cada imagen, incluyendo las lineas (de 1x1 pixel puede ser).

La idea es muy simple, trata de ir creando la imagen e ir haciendo el display segun sea requerido, solo tienes que ver el formato de la imagen para comprender.

Si los links que te puse no te dan una idea y tampoco lo que te he dicho puedes ver librerias mas centradas en el tema de videojuegos como SDL...
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

Eddycito

  • Miembro activo
  • **
  • Mensajes: 25
    • Ver Perfil
Re: Ayuda Con Perl Gnome_canvas
« Respuesta #3 en: Viernes 27 de Abril de 2007, 06:19 »
0
Gracias -Su- por responderme y perdon por repetir el tema. :hola:

Bueno aqui te envio el codigo en el archivo adjunto que subi.

Aqui puedes ver lo que te digo tambien temuestro dos capturas de pantalla del programa corriendo.

Se puede añadir items y estos items quiero unirlos con lineas y que las lineas se redimensionen su tamaño al mover los items.
Y otro problema que tengo, es que el ToogleButton no se puede desactivar haz correr el programa y veras.
gracias y espero tu respuesta.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Ayuda Con Perl Gnome_canvas
« Respuesta #4 en: Viernes 27 de Abril de 2007, 22:45 »
0
Ahora lo veo y te saco algo  ;)
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Ayuda Con Perl Gnome_canvas
« Respuesta #5 en: Viernes 27 de Abril de 2007, 23:14 »
0
Te podria dar el codigo completo, pero no lo hare para que puedas aprender (metodo raro pero funciona  :devil: )

Primero que todo, en la primera linea ("#/usr/bin/perl -w") sobra el -w y seria mejor si pones #!/usr/bin/env perl

Segundo: haces muchos subs inecesarios, _init(), crear_ventana, crear_botones y crear frame sobran.

Tercero: cada vez que creas una variable y usas strict (el pragma) o tus codigos son grandes debes de usar el declarador lexico "my"

Cuato: "Dibujar" deberia ser un boto comun y corriente.

Cada item debe de tener un signal_connect miralos en la pagina que te puse.

Usa el pragma strict que te ayudara mucho y el resto, depronto te subo un codigo
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

Eddycito

  • Miembro activo
  • **
  • Mensajes: 25
    • Ver Perfil
Re: Ayuda Con Perl Gnome_canvas
« Respuesta #6 en: Sábado 28 de Abril de 2007, 05:02 »
0
:)  Gracias -su- por tus consejos estoy viendo el enlace que me dejaste...

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Ayuda Con Perl Gnome_canvas
« Respuesta #7 en: Sábado 28 de Abril de 2007, 17:00 »
0
Bueno, este es el codigo medio arreglado solo falta arreglar lo de dibujo:

El desactivar el boton de dibujo, el sigue dibujando y no se porque (es que no uso cosas de Gnome :alien: ) pero a nivel general el codigo ya es trabajable  :)
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

Eddycito

  • Miembro activo
  • **
  • Mensajes: 25
    • Ver Perfil
Re: Ayuda Con Perl Gnome_canvas
« Respuesta #8 en: Lunes 30 de Abril de 2007, 18:53 »
0
Gracias -su- por tu ayuda

Eddycito

  • Miembro activo
  • **
  • Mensajes: 25
    • Ver Perfil
Re: Ayuda Con Perl Gnome_canvas
« Respuesta #9 en: Lunes 30 de Abril de 2007, 21:30 »
0
Hola -su- pudiste probar unir las imagenes con las lineas? :hola:

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Ayuda Con Perl Gnome_canvas
« Respuesta #10 en: Lunes 30 de Abril de 2007, 21:56 »
0
Cita de: "Eddycito"
Hola -su- pudiste probar unir las imagenes con las lineas? :hola:
Usando canvas si, el problema es dejar de diburjlo y borrar lo dibujado.

Lo de las imagenes (dibujar cada una) es mas complicado y menos recomendable.

Ahora bien recuerdo que hay un proyecto llamado Gournal donde podes ver como se usa las funciones de dibujado y hacerlo todo (100%) en Gtk2-perl.

Nunca lo he hecho ni lo he intentado (lo anterior) pero otra forma de hacerlo es usando Gtk2::Gdk y me surge la idea por este ejemplo pero la verdad es que soy mas amigo de la terminal a la hora de programar.
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

Eddycito

  • Miembro activo
  • **
  • Mensajes: 25
    • Ver Perfil
Re: Ayuda Con Perl Gnome_canvas
« Respuesta #11 en: Martes 1 de Mayo de 2007, 05:21 »
0
Hola -su- Sabes donde puedo encontrar codigo de programas hechos en gnome donde utilizan canvas? :hola:

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Ayuda Con Perl Gnome_canvas
« Respuesta #12 en: Martes 1 de Mayo de 2007, 21:32 »
0
Nop, el unico link que usa Gnome2::Canvas es el que te puse de CPAN (los demos) y no hay mas.
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

Eddycito

  • Miembro activo
  • **
  • Mensajes: 25
    • Ver Perfil
Re: Ayuda Con Perl Gnome_canvas
« Respuesta #13 en: Miércoles 9 de Mayo de 2007, 23:33 »
0
Hola -su- Sabes algo de Gnome2::Canvas::Pathdef, donde hay ejemplos? :rolleyes:

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Ayuda Con Perl Gnome_canvas
« Respuesta #14 en: Miércoles 9 de Mayo de 2007, 23:47 »
0
Nuevamente, con Perl no se suele usar Gnome2... todoas las aplicaciones (usualmente rapidas) se suele hacer con Gtk2, Gnome2 es relativamente nuevo y sus funciones poco usadas.
Es mas si vez su documentacion (Canvas) es muy resumida y para un uso optimo se necesitara a un guru para leer el .XS y los .PM

Recuerda: hay mas de una manera de hacer las cosas, con Gtk2 es muy facible hacerlo... mira los ejemplos.

Si quieres hacer algo mas complejo que unir esas imagenes con lineas podes usar, dependiendo del caso, SDL.
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Ayuda Con Perl Gnome_canvas
« Respuesta #15 en: Jueves 10 de Mayo de 2007, 00:13 »
0
EN este momento lo he arrglado  :P  

Código: Text
  1. sub event_mouse {
  2.   my ($can,$event) = @_;
  3.   if ($event->type eq 'button-press') {
  4.     if ($event->button == 1 and $drag == 1) {
  5.       if($band == 0) {
  6.         $lx1 = $event->x;
  7.         $ly1 = $event->y;
  8.         $band = 1;
  9.       }
  10.       else{
  11.   $lx2 = $event->x;
  12.   $ly2 = $event->y;
  13.   $band = 0;
  14.         my $item = Gnome2::Canvas::Item->new
  15.   (
  16.     $root, 'Gnome2::Canvas::Line',
  17.     points => [$lx1, $ly1, $lx2, $ly2],
  18.     fill_color => 'red',
  19.     first_arrowhead => TRUE,
  20.     last_arrowhead => TRUE
  21.   );
  22.   $drag = 0;
  23.       }
  24.     }
  25.   }
  26. }
  27.  

Asi debe ser esa funcion...

Teniendo en cuenta esto:

Citar
sub toogle_activation{
   my $doit = shift;
   if (defined $doit) {
  $drag = TRUE;
  $canvas->signal_connect(event => \&event_mouse);
   }
   else {
  $drag = FALSE;
   }
}
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.