Diseño del Ejercicio
Tenemos que implementar las siguientes funcionalidades:
oCarga de una imagen desde disco para convertirla a una cadena de texto y guardarla en la base de datos en un campo texto.
Para obtener una imagen en memoria desde un fichero en disco usamos la función load() de la clase VImage.
La clase VByteArray carga los datos binarios desde oImage mediante la función saveToData() y para obtener la cadena de texto usamos la función toBase64() que codificará los datos binarios en el esquema Base64, ampliamente aceptado y utilizado en transmisiones telemáticas (http://es.wikipedia.org/wiki/Base64).
La cadena Base64 contiene la imagen completa con todas sus características pero ahora la podremos gestionar como un simple Dato de tipo Alfa.
Ver Carga de la Imagen con VByteArray
Existe un pequeño problema, la codificación Base64 utiliza solo 64 caracteres y por lo tanto el tamaño de la imagen aumentará respecto a la versión binaria.
oVisualizar en el formulario una imagen codificada en Base64 que tenemos guardada en un campo texto de la tabla.
Cargamos la cadena de texto en un ByteArray mediante la función setText() de la clase VByteArray. A continuación recuperamos la versión original binaria de la imagen con la función fromBase64(). El objeto imagen en memoria lo instanciamos con la función loadFromData() de la clase VImage para poder visualizarlo.
El problema es que Velneo no dispone de un control especializado que acepte un objeto VImage para mostrarlo en pantalla, la clase VImageWidget no dispone de una función para asignarle un objeto VImage. La clase VImageEdit requiere obligatoriamente un campo de tipo objeto dibujo y yo no he sido capaz de que acepte un objeto VImage. Así que he tenido que recurrir al único objeto que ha funcionado, el control botón con la función setIcon(). En tiempo de diseño del formulario tenemos que asignar al botón un Icono del mismo tamaño que la imagen que va a mostrar, pues de lo contrario el botón no reescala al tamaño de la imagen.
Más adelante veremos que he diseñado otros 2 métodos más para mostrar imágenes en el formulario.
oSuperponer dos o más imágenes en un control respetando la transparencia.
Si usamos un control botón para mostrar las imágenes en un formulario disponemos de las siguientes facilidades:
▪El control botón respeta la transparencia de la imagen asignada como icono.
▪El control botón se pueden superponer a otros controles del formulario mediante un layout de tipo Grid y conseguimos el efecto tampón.
▪Varios controles de botón se pueden superponer con imágenes transparentes.
Ver Superponer imágenes en un Control
En el siguiente ejemplo mostramos 3 imágenes superpuestas (fondo azul, modelo y vestido).
Las 3 imágenes deben tener el mismo tamaño ancho x alto para que encajen perfectamente.
La imagen de la izquierda muestra el Fondo y el Modelo. A la derecha se ha añadido el Vestido.
Aquí vemos una imagen superpuesta a los controles de un formulario como si fuera un tampón o sello.
Este es un Casillero con los formularios mostrando un sello en cada casilla.
Created with the Personal Edition of HelpNDoc: Full-featured EBook editor