Conocer si un punto está dentro de una closedcurve

24/01/2006 - 15:52 por Sergio | Informe spam
Hola,

Estoy desarrollando una aplicación en C# que maneja diferentes figuras.
Una de estas figuras la dibujo utilizando la función
Graphics.DrawClosedCurve().

Lo que ahora me interesa es saber si el usuario ha hecho click dentro o
fuera de esta figura, y no he encontrado ninguna función que devuelva
esta información.
¿Existe esta función? De no existir, ¿Como podría saber si un punto está
dentro de la figura que dibuja DrawClosedCurve()?

Muchas gracias.

Preguntas similare

Leer las respuestas

#1 sharpman
24/01/2006 - 16:11 | Informe spam
En vez de dibujar los puntos directamente a través de Graphics.DrawClosedCurve(),
créate un objeto GraphicsPath de la siguiente manera:

GraphicsPath gp = new GraphicsPath();
gp.AddClosedCurve(misPuntos);
e.Graphics.DrawPath(gp);

Luego, cuando el usuario haga click compruebas:
if ( gp.IsVisible(e.X, e.Y) )
// EL USUARIO HA HECHO CLICK DENTRO DEL GRAPHICS-PATH

También puedes mantener una lista de GraphicsPath en el formulario, en vez de crearlos y
destruirlos en el OnPaint(), para mejorar el rendimiento tanto en el pintado como en el
evento click.


"Sergio" escribió en el mensaje news:%23%
Hola,

Estoy desarrollando una aplicación en C# que maneja diferentes figuras.
Una de estas figuras la dibujo utilizando la función
Graphics.DrawClosedCurve().

Lo que ahora me interesa es saber si el usuario ha hecho click dentro o
fuera de esta figura, y no he encontrado ninguna función que devuelva
esta información.
¿Existe esta función? De no existir, ¿Como podría saber si un punto está
dentro de la figura que dibuja DrawClosedCurve()?

Muchas gracias.
Respuesta Responder a este mensaje
#2 Sergio
25/01/2006 - 08:48 | Informe spam
sharpman wrote:
En vez de dibujar los puntos directamente a través de Graphics.DrawClosedCurve(),
créate un objeto GraphicsPath de la siguiente manera:

GraphicsPath gp = new GraphicsPath();
gp.AddClosedCurve(misPuntos);
e.Graphics.DrawPath(gp);

Luego, cuando el usuario haga click compruebas:
if ( gp.IsVisible(e.X, e.Y) )
// EL USUARIO HA HECHO CLICK DENTRO DEL GRAPHICS-PATH

También puedes mantener una lista de GraphicsPath en el formulario, en vez de crearlos y
destruirlos en el OnPaint(), para mejorar el rendimiento tanto en el pintado como en el
evento click.




Pues si que era fácil, muchas gracias.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida