Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: al161684 en 7 Septiembre 2018, 02:46 am



Título: programa en visual studio
Publicado por: al161684 en 7 Septiembre 2018, 02:46 am
hola, alguien me podría ayudar en como hacer un programa en visual studio 2017 para hacer un programa que presente en una imagen las partes del cuerpo y que cuando el usuario señale con el mouse alguna de ellas el programa presente su nombre en inglés y en español.
gracias!!


Título: Re: programa en visual studio
Publicado por: Serapis en 8 Septiembre 2018, 15:48 pm
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:

Código
  1. Structure RegionPicture
  2.    X as Int32
  3.    Y as Int32
  4.    Ancho as Int32
  5.    Alto    as Int32
  6.    Texto  as string
  7. 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)"
Código
  1. Structure Punto
  2.    X as Int32
  3.    Y as Int32
  4. end Structure
  5.  
  6. ' El array de puntos debería encerrar la figura, es decir el último punto debería tener las mismas coredenadas que el primero.
  7. Structure RegionPicture
  8.    Pts() as Punto
  9.    Texto  as string
  10.  
  11.    Function PuntoEnRegion(pt as Punto) as boolean
  12.          ' recorrer el array 'pts', para determinar si el punto recibido está dentro de la región que define el array de 'pts'...
  13.    end function
  14. 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...


Título: Re: programa en visual studio
Publicado por: gundream en 31 Octubre 2018, 22:21 pm
Yo pongo la imagen en la pantalla, pongo encima de la imagen unas pocas etiquetas de texto en plan LABEL transparente, y cuando hagas click en la zona del label (aunque sea transparente, el evento se dispara igual) muestras el texto o sonido que quieras. Fácil, rápido y sin pegas.  :silbar:


Título: Re: programa en visual studio
Publicado por: Eleкtro en 17 Enero 2019, 00:09 am
Llego tarde a leer y responder, pero bueno...

La solución apropiada sería la que ha comentado NEBIRE, solo que suponiendo que realmente la pregunta sea para VB.NET, entonces los ejemplos con clases personalizadas resulta algo innecesario cuando tenemos a nuestra disposición la clase System.Drawing.Region y System.Drawing.GraphicsPath. No necesitarías más. Y también deberías recortar las imágenes y superponerlas en la original, lo que dijo NEBIRE al final de su comentario, vaya, esto simplificaría enormemente la tarea de asignar las regiones, puesto que usarías los límites de la imagen recortada como región (en lugar de tener que calcular y especificar manualmente todos los puntos de la trayectoria).

Saludos.