2011-06-17 34 views
5

Estoy haciendo una aplicación de inventario C#. Sin embargo, quiero que haya un mapa donde el usuario pueda hacer clic en varias áreas e interactuar con el inventario en esa área determinada.Clickable Image Map C#

Actualmente hice una foto del mapa y lo convertí en el fondo del formulario. Estoy planeando colocar cuadros de imagen en las diferentes áreas y codificar manualmente los eventos del mouse sobre, hacer clic y hacia abajo para que aparezca el botón.

De todos modos, mi pregunta es, ¿es esta una buena idea? ¿Debo simplemente cargar el mapa en una caja de imágenes, deshacerme de los efectos visuales y seguir las coordenadas del clic?

Respuesta

2

Aunque no creo que esto es una mala idea, una alternativa sería utilizar Rectangles y tienen una función onclick que consiste en una serie de Rectangle.Contains(Point) para averiguar si el punto se hace clic con el ratón está contenida en cualquiera de las áreas clicables.

E.G.

Rectangle R1 = new Rectangle(/*Passed Variables*/); 
Rectangle R2 = new Rectangle(/*Passed Variables*/); 
//... 
OnClick(object sender, MouseEventArgs e) 
{ 
If (R1.Contains(e.Location)) 
    { 
    //Stuff 
    } 
else 
{ 
    If (R2.Contains(e.Location)) 
    { 
    //Stuff 
    } 
} 
} 

Si usted tiene una lista grande de objetos Rectangle, sin embargo, siempre se puede utilizar una serie de rectángulos y un bucle de una manera más eficiente de comprobar si la ubicación es hecho clic dentro de cualquier rectángulo.

+0

Utilizaría una matriz si hubiera más de 1. – mpen

0

En CodeProject, alguien ha creado un ImageMap Control para este propósito. Me imagino que hay otros disponibles.

+0

gracias, lo comprobaré – barbara