Form transparente

0/5 (6 avis)

Vue 10 295 fois - Téléchargée 1 014 fois

Description

Voila une Form rendu transparente grâce à une capture d'écran projetée en
background : bon, c'est un peu boeuf mais ca marche...

Enjoy it.

ps : merci au forum pour le code sur la capture d'écran.

pps : j'ai rajouté une capture d'écran

Source / Exemple :


Option Explicit

Dim prevX As Single
Dim prevY As Single
Dim bLock As Boolean
Dim iCount As Integer

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Sub Capture(Optional withVisible As Boolean = False)
     bLock = True
    
    prevX = Me.Left
    prevY = Me.Top
    
    If withVisible Then Me.Visible = False
    DoEvents
    Clipboard.Clear
    Call keybd_event(vbKeySnapshot, 1, 0, 0)
    While Not Clipboard.GetFormat(vbCFBitmap)
        DoEvents
    Wend
    Picture1.Picture = Clipboard.GetData(vbCFBitmap)
    
    If withVisible Then Me.Visible = True
    Me.Left = prevX
    Me.Top = prevY
    
    Clipboard.Clear
    
     bLock = False
End Sub

Private Sub Command1_Click()
    Unload Me
End Sub

Private Sub Form_Load()
    Call Capture(True)
    Call RefreshBackGround
End Sub

Private Sub RefreshBackGround()
     bLock = True
     
    prevX = Me.Left
    prevY = Me.Top
    
    Picture1.Width = prevX + Me.Width + 100
    Picture1.Height = prevY + Me.Height + 100
    Picture1.Top = -prevY - 330
    Picture1.Left = -prevX - 90
    
     bLock = False
End Sub

Private Sub Timer1_Timer()
    If bLock Then Exit Sub
    If Me.Left <> prevX Or Me.Top <> prevY Then
        RefreshBackGround
    Else
        iCount = iCount + 1
        If iCount > 3 Then
            iCount = 0
            Call Capture
        End If
    End If
End Sub

Codes Sources

A voir également

Ajouter un commentaire Commentaires
jrbleboss Messages postés 480 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 3 septembre 2007 1
18 avril 2005 à 21:38
Ca peut etre bien car les controls eux reste normaux.

JRB
cs_Kernox Messages postés 34 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 10 juillet 2005
19 oct. 2004 à 13:45
L'idee est interressante mais ne s'applique pas a une forme pouvant changer de place , puisque la form apparait elle meme dans la capture suivante donnat un effet "infini". Cependant pour une form fixe c'est trés bien et une seul capture au depart suffit :-)

Bon boulot !
skowee59 Messages postés 78 Date d'inscription vendredi 17 janvier 2003 Statut Membre Dernière intervention 29 juin 2006
22 août 2003 à 16:33
Le principe est pas mal mais si le seul hic c kil y a encore les bordures ! Si tu ve un autre exemple de Form transparente, vas voir sur le site www.c2i.fr
@ +
joshrbz Messages postés 5 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 5 décembre 2003
21 août 2003 à 09:15
Golog : le Timer est à 300 dans mon code... et ca marche bien ??? J'ai essayé à 25 sur un P3 600, le resultat est pas mal, y a un effet loupe un peu. Maintenant, si j'ai mis 300, c'est pour éviter de polluer le CPU. L'intérêt est que la fenêtre soit utilisable...
En fait , je conseille d'augmenter la valeur max de iCount en fonction du timer pour la capture se fasse max toute les 500 ms.En gros, Icount max = 500/Timer.Interval
Golog Messages postés 224 Date d'inscription jeudi 31 janvier 2002 Statut Membre Dernière intervention 22 décembre 2009
20 août 2003 à 19:03
j'ai essayé , une fois que le timer est mis en dessous de 500 sa foire l'image se barre :s essaye de reglé sa

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.