Form transparente

Soyez le premier à donner votre avis sur cette source.

Vue 9 893 fois - Téléchargée 991 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

Messages postés
480
Date d'inscription
jeudi 6 mai 2004
Statut
Membre
Dernière intervention
3 septembre 2007

Ca peut etre bien car les controls eux reste normaux.

JRB
Messages postés
34
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
10 juillet 2005

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 !
Messages postés
78
Date d'inscription
vendredi 17 janvier 2003
Statut
Membre
Dernière intervention
29 juin 2006

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
@ +
Messages postés
5
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
5 décembre 2003

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
Messages postés
224
Date d'inscription
jeudi 31 janvier 2002
Statut
Membre
Dernière intervention
22 décembre 2009

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
Afficher les 6 commentaires

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.