Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-12-2007
djmetroid djmetroid is offline
Registrado
 
Registrado: nov 2007
Posts: 4
Poder: 0
djmetroid Va por buen camino
eso es exactamente lo que quiero hacer nightynvid, pero lo dificil esta en implementar un procedure que se encargue de ver si se intersectan o no los valores del circulo y del raton, y supongamos que ya tengo ese procedure y si se intersectan , como dice lepe, un objeto es abstracto y no puede moverse, pero me imagino que se puede llamar a un procedure que hice llamado traslacion, y que obviamente traslada ese circulo dandole la coordenada respectiva, se debe meter ese procedure en el evento mousemove me imagino o estoy mal, y el evento mouse down es el que calcula la coordenada del raton inicial, y el mouse up la coordenada donde se va a trasladar el circulo, o de plano estoy perdido, y todo esta mal
por cierto, si pinte el circulo en un canvas Timage
Responder Con Cita
  #2  
Antiguo 04-12-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Puedes usar los 3 eventos MouseDown, MouseMouve y MouseUp, todo depende de la lógica que quieras usar. Como lo has planteado es lo normal.

Para hallar intersección, Delphi tiene:
- ptInRect Dado un cuadrado (TRect) y un punto, devuelve True si el punto está en el cuadrado
- ptInRegion, es algo más compleja de usar, pero valdría para saber si un punto está inscrito en cualquier polígono pintado a mano alzada, (quizás el método para ver si un circulo intersecta con el cuadrado). Primero debes usar CreateRgn para crear el círculo. Mira en la ayuda de delphi.

Lo que no queda claro es la lógica del programa, una forma es esta:

Uso una variable Global del form llamada IsMouseDown:Boolean, en el MouseDown del Timage la pongo a True, en el MouseUp del Timage la pongo a false. (esto me permite saber en el evento MouseMove si el usuario tiene presionado el ratón mientras mueve el ratón por el TImage).

- Mantengo pulsado el ratón en el canvas, llamo a una función llamada Intersecta que devuelve True si el punto donde he bajado el ratón interfiere con otros ya pintados:

- Si devuelve False, pinto el circulo.
- Si devuelve True, cambio el cursor del ratón al símbolo de prohibido (dando a entender al usuario que ahí no puede pintar)
En el evento MouseMove, si la variable IsMouseDown está a true, llamo a la misma rutina Intersecta (con la nueva posición del ratón)

Por último en el evento OnMouseUp verifico que el botón estaba presionado y que se puede pintar sin colisiones, en este punto dibujo el círculo y pongo la variable IsMouseDown a false.

¿te sirve?

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 04-12-2007
djmetroid djmetroid is offline
Registrado
 
Registrado: nov 2007
Posts: 4
Poder: 0
djmetroid Va por buen camino
lo voy a intentar gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como acceder a un objeto si el nombre es pasado como un string marcelinux Varios 4 08-11-2007 00:20:39
Como obtener las variables de un objeto TEO127 OOP 17 08-06-2007 12:43:05
Como crear un objeto en Delphi ? Delphiboy OOP 3 31-01-2006 20:39:15
Como guardar un objeto en un archivo ? cmurua71 OOP 7 18-11-2005 21:26:30
como ordena delphi los fields de un objeto oworty OOP 3 27-01-2005 15:47:53


La franja horaria es GMT +2. Ahora son las 00:32:27.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi