En primer lugar este espacio es para vb6... para NET el sitio está algo más 'arriba'.
Hay varias formas...
1 - Una de ellas es definir regiones... con una estructura simple similar a esto:Structure RegionPicture
X as Int32
Y as Int32
Ancho as Int32
Alto as Int32
Texto as string
End Structure
Se crea una estructura por cada parte del cuerpo humano se rellenan los datos y se añaden a una colección...
Cuando el usuario haga click en la imagen, el evento devuelve las cordenadas de click, se va recorriendo la colección, para investigar si se ha pulsado en una región específica, en cuyo caso se muestra el texto correspondiente... incluso puede ponerse en una casilla en español/inglés, por ejemplo y pedir la traducción al otro idioma no dado.
Este método aunque simple presenta algunas desventajas... - La región definida es rectangular, no refleja la forma exacta de prácticamente ninguna parte.
- Dos partes podrían compartir cordenadas, con lo que aunque se encontrase una región sería acertado terminar de recorrer la región para ver si alguna más se centra en la posición pulsada. Podría decidirse entre ellas en base a la región que mejor tenga centrada dicha cordenada, o puede mostrarse las diferentes regiones coincidentes... Si son más de dos, lo complica de cara al usuario.
- Unas forma de paliarlo, es modificar la imagen original (una copia), y señalar pequeñas áreas donde debe pulsarse, coloreando ligeramente de diferentes colores cada área... ciñendo las áreas los más posible, se minimiza la posibilidad de error o de pulsar en dos regiones colindantes...
2 - Algo más complejo es modificar la estructura para definir una región con un array de puntos, y no solo 4 que definen un ractángulo... Esto tiene la desventaja de que supondrá mayor esfuerzo para hacerlo, además deberá crearse una función también algo más compleja para determinar "boolean = EstaPuntoEnRegion(pt as punto, region() as punto)"
Structure Punto
X as Int32
Y as Int32
end Structure
' El array de puntos debería encerrar la figura, es decir el último punto debería tener las mismas coredenadas que el primero.
Structure RegionPicture
Pts() as Punto
Texto as string
Function PuntoEnRegion(pt as Punto) as boolean
' recorrer el array 'pts', para determinar si el punto recibido está dentro de la región que define el array de 'pts'...
end function
End Structure
3 - Otra solución más óptima es recurrir de nuevo a la imagen original... hacer una selección de las regiones de cada parte, copiar las selecciónes y guardarlas como una imagen transparente. Proceder de igual modo con cada parte dle cuerpo humano que se quiera considerar...
Luego simplemente se trata de mostrar en la ventana todas las imágenes superpuestas... al hacer click, se hará click sobre cada imagen específica (las áreas transparentes deben manejarse como no sensibles al click), entonces derivando al mismo evento click, para todas las funciones, basta un 'select case' para determinar cual de las imágenes fue pulsada y por ello mostrar el texto que corresponda.
...cuando te decidas por un método a usar y adelantes código, si te quedas atascado en algún punto... pregunta, pero ya centrado en una cuestión específica...