Imagen Mosaico en un Formulario

Rellena el fondo de un formulario con una imagen dada.

Declaración 32 bits.

Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, _
         ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, _
         ByVal dwRop As Long) As Long

Declaración 16 bits.

Declare Function BitBlt Lib "gdi" (ByVal hDestDC As Integer, ByVal x As Integer, ByVal y As Integer, _
         ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hSrcDC As Integer, ByVal xSrc As Integer, _
         ByVal ySrc As Integer, ByVal dwRop As Long) As Integer

Esta es la función que se encargara de pintar la imagen en todo el formulario.

Sub TilePicture(frmDest As Form, picSource As PictureBox)
        Dim iPicWidth As Integer
        Dim iPicHeight As Integer
        Dim iFormWidth As Integer
        Dim iFormHeight As Integer
        Dim x As Integer
        Dim y As Integer
        Dim iResult As Integer
        Dim iOldScale As Integer
        
        iOldScale = picSource.ScaleMode
        picSource.ScaleMode = 3
        iPicWidth = picSource.ScaleWidth
        iPicHeight = picSource.ScaleHeight
        picSource.ScaleMode = iOldScale
        
        iFormWidth = frmDest.Width / Screen.TwipsPerPixelX
        iFormHeight = frmDest.Height / Screen.TwipsPerPixelY
        
        For x = 0 To iFormWidth Step iPicWidth
                For y = 0 To iFormHeight Step iPicHeight
                        iResult = BitBlt(frmDest.hDC, x, y, iPicWidth, iPicHeight, picSource.hDC, 0, 0, SRCCOPY)
                Next
        Next
End Sub

A continuación en el evento Paint del formulario hacemos la llamada la función y, por ejemplo, en el evento Load cargamos la imagen en el Picture1:

Private Sub Form_Paint()
        TilePicture Me, Picture1
End Sub

Private Sub Form_Load()
        Picture1.Picture = LoadPicture("C:FONDO.BMP")
End Sub
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s