Título: Información en int, hex y bin dentro de un Form Publicado por: Meta en 20 Agosto 2014, 09:14 am Añado tres label en el Form, como indica en la imagen de abajo en cuadro rojo. (http://social.msdn.microsoft.com/Forums/getfile/513787)
Según pinche en los píxeles que en realidad cada cuadrado es un pictureBoxse vaya actualizando los datos int, hex y binario. (http://social.msdn.microsoft.com/Forums/getfile/513827) El código que he hecho hasta ahora es este, pero no he puesto aún los label. Código
¿Cuál es la mejor forma de codearlo? Saludo. Título: Re: Información en int, hex y bin dentro de un Form Publicado por: seba123neo en 20 Agosto 2014, 20:31 pm la mejor forma es hacer todo dinamico en tiempo de ejecucion.
o sea crear los controles "al vuelo" y asignarle sus eventos, sino te queda un monton de codigo. creas los picturebox con un simple bucle for de 1 a 50 o lo que sea, ahi vas creandolos y posicionando en el form, luego le creas un addhandler para el evento click de cada uno, y todos los clicks van a entrar por el mismo manejador del evento. te quedaria un codigo de no mas de 20 lineas para todo y el dia que quieras agregar mas controles no te va a afectar en nada. la segunda opcion y mas "profesional" digamos es hacerlo "sin controles en absoluto", tendrias que "pintar" los cuadrados en el form, y el evento mousemove y click del form se encargaria de reconocer el color, etc.. te quedaria mas chico el codigo todavia y sin obejetos. cualquiera de las 2 opciones es facil. saludos. Título: Re: Información en int, hex y bin dentro de un Form Publicado por: Meta en 20 Agosto 2014, 23:27 pm Hola:
Gracias por responder, pero las opciones se me escapa de mis conocimientos. Voy haber si lo pillo. Quiero crear 35 pictureBox, me imagino que con un for (http://msdn.microsoft.com/es-es/library/ch45axte.aspx) se podrá hacer. Código
Por ahora, el como lo tengo hecho a pesar de tener mucho código, no me importa, pensando bien. Quiero continuar una cosa que no me sale. (http://www.subeimagenes.com/img/lcd-1064410.png) Fijándome justo la imagen de arriba, al pinchar los pictureBox quiero que aparezcan en tiempo real los resultados en Decimales, Hexadecimales y Binarios. El tiempo real quiero decir, que desde que pulse un pictureBox, se actualiza los datos dentro de los textBox inficado arriba. Con usar timer de 0.1 segundo funciona en vez de usar un botón para actualizar. Espero que se entienda lo que quiero hacer. Esta parte si que no me sale. Saludo. Título: Re: Información en int, hex y bin dentro de un Form Publicado por: Eleкtro en 21 Agosto 2014, 09:42 am ¿Cuál es la mejor forma de codearlo?[/b] Pues hombre... agregar 35 controles y usar 35 event-handlers para suscribirte al mismo evento desde luego que no es lo más eficiente, se puede reducir mucho el código para que sea siendo dinámico como dijo el compañero seba123neo, pero seguiría habiendo 35 controles en la UI, hay otras formas de hacerlo de forma dinámica (como también te explicó seba123neo). Mi consejo: 1. Utiliza solo 1 picturebox de fondo, y para todo lo demás utiliza las classes de GDI+. 2. Dibuja una rejilla del tamaño deseado sobre el picturebox, con las columnas y filas deseadas, en el evento Paint del picturebox. 3. Crea 1 Rectangle por cada sector de la rejilla, y así ya tienes una referencia de cada sector de la rejilla con su respectiva localización y tamaño a la que puedes acceder en cualquier momento. 4. En este punto ya se supone que deberías haber obtenido una coleción de los sectores de la rejilla( te sugiero añadirlos a una List(Of Rectangle) ), así que solo tienes que suscribirte a los eventos del Mouse (MouseMove y MouseClick) del PictureBox donde harás las operaciones necesarias (como por ejemplo especificar en que sector de la rejilla se hizo click, y el color despues de hacer click, etc), fin del problema. Te muestro un ejemplo: (http://i.imgur.com/Eeplpl3.gif) En ese ejemplo solo utilicé 1 picturebox con el fondo negro (aunque un picturebox tampoco es totalmente necesario pero facilita un poco la tarea), dibujé la rejilla con Pens, y para todo lo demás utilicé Rectangle, siguiendo los pasos que te he explicado. No voy a mostrar todo el trabajo porque la idea es que aprendas a hacerlo pro ti mismo, y además, yo lo hice en VB.NET, peor te dejo una ayudita por si te sirve (lo puedes traducir a C# en convertidores online): Este método lo escribí para dibujar los márgenes del grid (lo debes utilizar en el evento Paint): Código
Y este método lo escribí para obtener los rectangles de la rejilla: Código
EDITO2: bueno voy a mostrate el resto del código porque total lo hice para ayudarte con el problema y ya no me sirve para nada esto así que antes de tirarlo te lo enseño xD, espero que te sirva. ( esta parte del code lo desarrollé en poco tiempo, está bastante sucio el código y se puede mejorar mucho, pero sirve para hacerse una idea ) Código
EDITO1: Fijándome justo la imagen de arriba, al pinchar los pictureBox quiero que aparezcan en tiempo real los resultados en Decimales, Hexadecimales y Binarios. El tiempo real quiero decir, que desde que pulse un pictureBox, se actualiza los datos dentro de los textBox inficado arriba. Con usar timer de 0.1 segundo funciona en vez de usar un botón para actualizar. Espero que se entienda lo que quiero hacer. Esta parte si que no me sale. Lo siento creo que no te entendí muy bien, ¿que problema tienes actualmente a la hora de actualizar los valores de cada control?. Si vas a utilizar tropecientos pictureboxes entonces deberías suscribirte al evento Click como te explicó seba123neo, y una vez pulses cualquier picturebox actualizaríass los valores (de forma interna) y los imprimirías en los textboxes, ¿cual es el problema? Saludos |