PDA

Ver la Versión Completa : Botón con imagen de fondo y texto posiciónable


rcuevas
27-01-2011, 12:41:03
Buenas a todos,

He de hacer una aplicación para "pantalla táctil", y el cliente, más que pantalla táctil, lo que quiere es que sea "muy bonito".

Para que comprendiese mejor le concepto "pantalla táctil" y "muy bonito", me ha enseñado algo parecido a lo que le gustaría, y me he dado cuenta de que con los componentes de siempre me será imposible acercarme a lo deseado, ya que quiere botones con formar irregulares, transparencias por todas partes, y demás.

La primera idea fue hacerlo todo con imágenes colocadas donde deben estar, pero no pueden ser imágenes estáticas ya que el texto depende del idioma en que el cliente quiera ver el programa.
Y claro, como no sé cuantos idiomas habrá finalmente, me parece muy chapucero.

Llegué a la conclusión que necesitaba un botón al que le pudiese asignar:
- una imagen como fondo
- un texto con:
- la fuente que quisiese
- en el lugar del botón que quisiese
- Propiedad enabled que pase a grises la imagen si hace falta.

Entonces, he pensado en hacer un componente que heredase de TImage, al que le añadiese 5 características:
- Texto
- Fuente del texto
- Posición del texto
- Posición X respecto arriba el Top de la imagen.
- Posición Y respecto arriba el Left de la imagen.

Mi intención era que el componente, al dibujarse, dibujase sobre la imagen seleccionada el texto indicado allí donde quería el cliente, y luego utilizar esa imagen como botón, mediante los eventos de los que ya dispone, más la nueva propiedad Enabled.
Pero me he encontrado con algo grave.
Y es que sólo es posible modificar el canvas de la imagen si el contenido es un bitmap.
Y si el contenido es un bitmap, las transparencias de la imagen se pierde. Otra cosa que no me puedo permitir debido a los requerimientos.

Viendo que no salía adelante, me he decidido a buscar un componente que hiciese lo que necesito.
Aparentemente, lo que pido es muy útil para mucha gente, por lo que creía que debía encontrarlo con relativa facilidad.
Pero el caso es que no encuentro lo que necesito.

Y la pregunta es si alguien sabe de algún componente que cumpla con las condiciones detalladas.

Muchas gracias a todos.

LoPiTaL
27-01-2011, 16:05:03
Así a bote pronto se me ocurre que podrías utilizar la librería graphics32 (GR32). Soporta capas, transparencias, etc... pero no implementa botones, por lo que la parte de eventos sí que deberías currártela. Pero por lo menos la parte de las imágenes se te simplifica bastante.

http://graphics32.org/wiki/

Botones como los que estás pidiendo yo no he visto ninguno.

Un saludo,
LoPiTaL

roman
27-01-2011, 16:19:10
Yo buscaría botones que te permitan mostrar imágenes PHP. Yo usaba los PNG Components pero creo que ya están descontinuados. De todas maneras busca en Torry (http://www.torry.net/), que probablemente encuentres algo.

// Saludos

rcuevas
28-01-2011, 11:52:48
Buenas de nuevo,

He sido capaz de hacer un programilla que, al apretar un botón, hace una captura de pantalla y recorta de esa captura de pantalla, los pixeles donde aparece la imagen.

Una vez hecho eso, yo ya tengo en un bitmap el aspecto final del botón, pero sin las letras. Y como es un bitmap, ya puedo añadir las letras que quiero.

Hecho esto, le digo a la imagen que cargue el nuevo bitmap, que es clavado al anterior, pero con letras. Perfecto, ya tengo la imagen que quiero.

Esto funciona bien, pero tiene el problema que, si aprieto el botón teniendo un ventana delante de la imagen que quiero copiar, la captura de pantalla captura esa otra ventana, de modo que el botón final no muestra los pixeles adecuados.

Para solucionarlo, en vez de capturar la imagen de la pantalla, capturo la imagen de mi padre, pero en mi padre, yo no aparezco!!

Voy a probar de capturar la imagen de mi programa, no de mi padre