Newsgroup: it.comp.lang.visual-basic
Titolo: Come posso riempire lo sfondo di un form con un'immagine?

Ho provato con il metodo PaintPicture e dei clicli For...Next inseriti nella
routine d'eventi Form_Paint() e ci sono riuscito. Però ho questo
inconveniente. Se l'immagine con cui riempire lo sfondo è molto piccola
occorrono molti cicli e il tempo aumenta e perciò si nota chiaramente il
disegnamento dell'immagine sullo sfondo ogni qual volta che si carica il
form o ogni qual volta che si muove un'altra finestra sul form.
Come rimediare? Vorrei uno sfondo stabile come quello delle pagine HTML.
Qualcuno può aiutarmi?
Ringrazio in anticipo

 wrote in message

Lo "SporcoTrucco®" numero 1 è quello di caricare le immagini prima di
visualizzare il form con lo show, il secondo è di mettere AutoRedraw = True.
Non è un codice veloce come quello che si può fare con le API, ma credo
sia sufficiente.
In un form, inserisci un controllo Image, con Visible=False
Nel Form_Load inserisci questo codice:
_____________________________
    Dim NumeroX As Integer
    Dim NumeroY As Integer
    Dim LarghIm As Integer
    Dim AltIm As Integer
    Dim N As Integer
    Dim M As Integer
    Me.AutoRedraw = True
    Image1 = LoadPicture("c:\windows\bollicine.bmp")
    LoadPicture ("c:\windows\bollicine.bmp")
    LarghIm = Image1.Width
    AltIm = Image1.Height
    NumeroX = Me.Width \ LarghIm
    NumeroY = Me.Height \ AltIm
    For N = 0 To NumeroX
        For M = 0 To NumeroY
            Me.PaintPicture Image1, N * LarghIm, M * AltIm, LarghIm, AltIm
        Next M
    Next N
    Image1 = LoadPicture()
____________________________
Per "variazioni sul tema", guarda l'help di PaintPicture.
Bye, G.
--
---------------------------------------------
    Le risposte alle tue domande le trovi
    sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
       ... e nell'help in linea !
---------------------------------------------
Real E-address: 
gaet...@hotmail.com

dichiara l'api bitblt, poi
qui c'e' un picture picBacks che ne contiene un altro picSrc
e' pouttosto velcoe
Public Sub TilePic()
    On Error GoTo errman
    Dim TileIt As Long
    Dim x As Integer, Y As Integer
    Dim MaxX As Integer, MaxY As Integer
    Dim TileW As Integer, TileH As Integer
    Dim NumOfImg As Integer
    time1 = Timer
    With frmV
        .picBacks.Cls
        .picSrc.Picture = LoadPicture(MyFile)
        TileW = .picSrc.Width \ SX
        TileH = .picSrc.Height \ SY
        MaxX = .picBacks.ScaleWidth \ SX
        MaxY = .picBacks.ScaleHeight \ SY
        For Y = 0 To MaxY Step TileH
            For x = 0 To MaxX Step TileW
                TileIt = BitBlt(.picBacks.hDC, x, Y, TileW, TileH,
.picSrc.hDC, 0, 0, SRCCOPY)
'                TileIt = BitBlt(.hDC, X, Y, TileW, TileH, frmV.GvbWP.hDC,
0, 0, SRCCOPY)
                NumOfImg = NumOfImg + 1
            Next
        Next
    End With
    msgbox NumOfImg & " imgs -- " & _
        Format(Timer - time1, "###,###,##0.###") & " secs"
    Exit Sub
errman:    MsgBox Error
End Sub
Paperino <non...@lo.dico> wrote in message
7uv56b$282i$1...@stargate1.inet.it...



Prova ad usare questo .. (tipo Desktop..)
'
'   Codice da inserire nell'evento Resize della Form, sulla quale hai
piazzato una PictureBox
'   con l'immagine da replicare ....
'
'   Importante : la form deve avere la proprietà AutoRedraw=True
'
Dim Xw&, Yw&
Dim RegHnd&, hBrush&, Ret&
Xw = Me.ScaleWidth / Screen.TwipsPerPixelX                  ' Le API
lavorano sempre in Pixel
Yw = Me.ScaleHeight / Screen.TwipsPerPixelY
RegHnd& = CreateRectRgn(0, 0, Xw, Yw)                           ' Regione
Rettangolare di dimensioni pari alla form
hBrush = CreatePatternBrush(Picture1.Picture)                  '
Picture1.Visible=False, ovviamente
Ret = FillRgn(Me.hDC, RegHnd, hBrush)                              ' Riempie
la regione con il Brush definito
DoEvents
'
'   In Module1.Bas inserisci le dichiarazioni delle API
'
Option Explicit
Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As
Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Declare Function CreatePatternBrush Lib "gdi32" (ByVal hBitmap As Long) As
Long
Declare Function FillRgn Lib "gdi32" (ByVal hDC As Long, ByVal hRgn As Long,
ByVal hBrush As Long) As Long
Saluti
ML