Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 2 de 2
Ir a la página Anterior  1, 2
 
¿Existen Los Objetos Seleccionables Dentro De Un DrawingArea?
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Re: ¿Existen Los Objetos Seleccionables Dentro De Un DrawingArea? 
 
Ya esta rehecho el programa... lo puedes descarcar en el enlace: Enlace

He dejado varios programas, uno en gambas, y otros dos en Lazarus (para linux y windows)


Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Existen Los Objetos Seleccionables Dentro De Un DrawingArea? 
 
Gracias jsbsan.
 



 
Enchufadoo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Existen Los Objetos Seleccionables Dentro De Un DrawingArea? 
 
Hola amigos,

recientemente me encontré con el mismo problema. Aplicaba dos algoritmos seguidos para ver si el cursor estaba dentro de una figura poligonal cerrada:

ALGORITMO 1 (necesario pero no suficiente, sirve sólo para cribar)
1º Calculo un rectángulo envolvente de la poligonal, de coordenadas xmin, ymin, xmax, ymax. Para que el cursor esté dentro de la poligonal es necesario (pero no suficiente) que esté dentro del rectángulo envolvente, y esa comprobación es muy sencilla.

ALGORITMO 2 (necesario y suficiente, sólo para aquellas poligonales que han pasado la primera criba)
1º Contador = 0
2º Trazo, por ejemplo, la semirrecta horizontal derecha que pasa por el cursor.
3º Si algún vértice de la poligonal pasa (ya sería mala casualidad pero a veces se da) exactamente por la semirrecta, trazo otra semirrecta ligerísimamente por encima.
4º Para cada lado de la poligonal:
          - Si el lado es horizontal: CONTINUE (es decir, paralelo a la semirrecta, y por lo tanto no la puede cortar, si aplico las ecuaciones de corte de esas dos rectas  me daría división por cero, y eso es algo que me hace saltar chispas)
          - ELSE:
                      - Calculo el punto de corte entre la recta que contiene a la semirrecta y la recta que contiene al lado.
                      - Si el punto de corte entre ambas está dentro de la semirrecta y dentro del lado, entonces incremento en 1 el contador.
5º Si después de hacerlo para todos los lados, el contador es impar, entonces estamos dentro, y si es par estamos fuera. (El que la semirrecta pasase por un vértice haría errar con esta sencilla regla). Es como contar cuantas veces entramos o salimos de la poligonal: si sale impar es que estábamos dentro, si sale par es que estábamos fuera.

Mi algoritmo final era todavía más complicado, ya que mi cursor era un cuadrado de varios píxeles de ancho y alto, y:
- a veces la poligonal entera podía estar dentro de mi cursor cuadrado
- a veces mi cursor cuadrado estaba todo él dentro de la poligonal
- a veces un vértice o varios de mi cursor estaban dentro de la poligonal
- a veces un vértice o varios de la poligonal estaba dentro de mi cursor.
- a veces ningún vértice de la poligonal estaba dentro del cursor, ningún vértice del cursor estaba dentro dela poligonal, y sin embargo algún lado del cursor tocaba a algún lado de la poligonal.

En todos esos casos hacía "touché"   .

Saludos
 



 
última edición por Alaplancha el Miercoles, 12 Diciembre 2012, 21:15; editado 2 veces 
Alaplancha - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Existen Los Objetos Seleccionables Dentro De Un DrawingArea? 
 
Alaplancha:

Esta muy interesante tu explicacion y bien explicada. ¿podias compartir el código fuente? (las funciones de como lo has codificado)

Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Existen Los Objetos Seleccionables Dentro De Un DrawingArea? 
 
Hola jsbsan,

sí, voy a ponerme a hacer una explicación más detallada de ese método. Me llevará un tiempito hacerlo bien, detallando lo de las ecuaciones de la recta,.... En cuanto lo tenga lo comparto.

Saludos
 



 
Alaplancha - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Existen Los Objetos Seleccionables Dentro De Un DrawingArea? 
 
Hola amigos,

después de unos cuantos días de trabajo he conseguido documentar el algoritmo que utilicé para seleccionar elementos gráficos en un drawing area. No consigo subirlo de momento a la zona de descargas del foro, así que os remito a mi blog, donde se puede descargar.

Selección de elementos gráficos en un drawing area

Un saludo
 



 
Alaplancha - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Acceder A Objetos Que Están Dentro De Un ... santijav General 1 Viernes, 29 Abril 2011, 22:46 Ver último mensaje
santijav
No hay nuevos mensajes Buscar Dentro De Un Array De Objetos xmuno General 9 Jueves, 03 Septiembre 2015, 20:19 Ver último mensaje
xmuno
No hay nuevos mensajes Multiples Objetos En Un DrawingArea Shell General 3 Lunes, 14 Diciembre 2015, 10:58 Ver último mensaje
Shell
No hay nuevos mensajes Mover Imagen Dentro De Un DrawingArea Con ... Shell General 10 Lunes, 30 Enero 2017, 11:55 Ver último mensaje
shordi
 

Publicar nuevo tema  Responder al tema  Página 2 de 2
Ir a la página Anterior  1, 2

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron