Tjena Ser att du skriver "skrivbord.hDC", är det hDC för "windowsskrivbordet"? I sådana fall borde du kunna ändra till fomulärets hDC. skrivbord.hDC är formulärets namn.....så formen heter skrivbord.. nja...det är så att man ska kunna byta ut bilden efter behag... Jaja, men det spelar väl ingen roll? Tror jag har en bättre funktion för dig: Typ samma princip som i "Kalle Anka" på julafton när det målar chackbrädan. Koden skapar en pensel av bilden och ritar den över formulärets yta. Hej Kopiering av bild över formen
det är så att jag har gjort ett program som jag har lagt en bil på själva formen
som sedan kopierar upp sig över hela formuläret
Se kod nedan:
<code>
Private Sub Form_Paint()
If multipic = True Then
Dim wid As String, hig As String
Dim X As Long, Y As Long, Z As Long
Dim swid As Long, shig As Long
swid = skrivbord.ScaleWidth
shig = skrivbord.ScaleHeight
wid = multipicw / 15
hig = multipich / 15
For Y = 0 To shig Step hig
For X = 0 To swid Step wid
Z = BitBlt(skrivbord.hDC, X, Y, wid, hig, _
skrivbord.hDC, 0, 0, COPYIT&)
Next
Next
End If
End Sub
</code>
Och det fungerar hur bra som helst....men mitt problem är att om jag lägger ett annat program över mitt program så kopieras även det programets GUI över hela mitt program....och så vill jag inte ha det....hur ska jag göra för att lösa detta problemet?Sv: Kopiering av bild över formen
/JohanSv: Kopiering av bild över formen
Sv: Kopiering av bild över formen
så det styrs av ett annat formulär..Sv: Kopiering av bild över formen
På något sätt utom på själva formen sparar du väl bilden? Kopiera in bilden först vid varje paint (eller vid varje sekund eller något sånt).Sv: Kopiering av bild över formen
<code>
Option Explicit
Private Declare Function CreatePatternBrush Lib "gdi32" (ByVal hBitmap As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function PatBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal dwRop As Long) As Long
Private Sub Form_Paint()
Dim hBrush As Long
hBrush = CreatePatternBrush(Picture.Handle)
If hBrush Then
SelectObject Me.hdc, hBrush
PatBlt Me.hdc, _
0, _
0, _
ScaleX(ScaleWidth - ScaleLeft, ScaleMode, vbPixels), _
ScaleY(ScaleHeight - ScaleTop, ScaleMode, vbPixels), _
vbPatCopy
DeleteObject hBrush
End If
End Sub
</code>
Förutsätter att bilden som skall fylla formuläret är tilldelad till Form1.Picture. Du kan ersätta den med variabel till din bild.
I win 95 fungerar den inte med bilder större än 8x8pixlar. Men vem använder win95?Sv: Kopiering av bild över formen
Sv: Kopiering av bild över formen
En sak du bör kolla och prova är att sätta Formens ClipControls till True
/Sven