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...


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

Esto genera el siguiente efecto:

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�.... ;-)


ir al índice