Mosaico en MDIs
Sin el P*** API
Fecha: 24-11-2K3 (de publicaci�n:
04/Dic/2003)
Autor: Coded by Jes�s Rodr�guez, ChuxMan. [email protected]
Breve Introducci�n.
Bueno, pues aqu� va la siguiente colaboraci�n.
Resulta que me han encargado revisar una aplicaci�n bastante pringosa, escrita en VB6 y cuyos clientes andan un poco mosca por la calidad del mismo.
Adem�s de revisar el c�digo y corregir un mill�n y medio de bugs, tambi�n decid� darle una limpieza visual a la aplicaci�n. As� les entrar�a m�s f�cilmente la nueva versi�n, directamente por los ojos.
Como estaba todo metido en un MDI, pens� en ponerle un fondito al MDI, pero claro, ni tiene funciones gr�ficas ni leches en vinagre, as� que �hala! �a tirar de API!
�Y madre m�a! �Vaya una puta mierda de API! Hay programadores en microsoft que son muy buenos, pero hay otros que se deber�an dedicar a la cr�a del cangrejo ermita�o...
El caso es que cuando ya iba a pasar mazo, porque si me tiro media hora investigando el api para algo visual me echan la bronca (son as� de h�biles)
y de repente, se me ocurre una idea, y me pareci� muy maja, como para cont�rosla a vosotros...
El tema
Se trata de un truco la mar de chorra, pero que hace exactamente lo que yo quer�a, y m�s, ��Y SIN EL API DE LOS COJONEEEEEES!!
Ponemos 3 pictures box, dos de ellos autoajustables. En el primero metemos la imagen que queremos poner en mosaico. En el segundo un logo majo que generaremos despu�s, y en el tercero, el proceso completo.
La idea es agrandar el tercer picture box al tama�o del screen, que ser� el m�ximo tama�o que vamos a tener... Para que el MDI lo acepte, meterlo en un cuarto picture que nos servir� de contenedor, con la propiedad visible a FALSE.
Despu�s llamamos a la siguiente funcioncita en el evento LOAD (y no, no tiene nada que ver con Metallica), y a tomar por saco...
Esto genera el siguiente efecto:
Sub Fondo()
'Vale, he tenido una idea para no utilizar la caca esta del API.
'Coded by ChuxMan. 21-11-2K3.
Dim X As Long, Y As Long
'Utilizamos un picture que le ajustamos al mismo tama�o que el formulario madre.
With Me.picTruco
'Redimensionamos el picture.
.Height = Screen.Height 'Me.Height
.Width = Screen.Width 'Me.Width
'Vamos a "imprimir" la imagen que tenemos en nuestro picture temporal
'como si fuera un "tamp�n".
For X = 0 To Int(.Width / Me.picFondo.ScaleWidth)
For Y = 0 To Int(.Height / Me.picFondo.ScaleHeight)
.PaintPicture Me.picFondo.Picture, X * Me.picFondo.ScaleWidth, Y * Me.picFondo.ScaleHeight
Next
Next
'Por �ltimo, el logo que te comas.
.PaintPicture Me.picLogo.Picture, 0, 0
End With
Set Me.Picture = Me.picTruco.Image
'Temporal para hacer el fondito del Logo... jejeje
'SavePicture Me.Picture, "c:\TmpFondo.bmp"
End Sub
La �ltima l�nea se puede descomentar para generar un ficherito en nuestro HDD que podemos utilizar para generar un logo con el fondo en marquesina, algo como esto:
Bueno, pues eso es todo. Lo bonito del asunto es que podemos pasarle dos par�metros m�s a la funci�n PaintPicture, y hacer que se estire, que se centre...
�lo que os salga de las narices!, aqu� ya es a gusto e imaginaci�n del programador.
Poz n�. Eso es todo. Espero que lo disfrut�is y que se vean las buenas aplicaciones por aqu�.... ;-)