IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB6] Rendre transparent le Fond d'une FORM


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier Avatar de Lucas42
    Inscrit en
    Janvier 2006
    Messages
    301
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 301
    Points : 97
    Points
    97
    Par défaut [VB6] Rendre transparent le Fond d'une FORM
    Bonjour , je vous expose mon probléme , j'aimerai rendre transparent le fond de ma FORM mais le soucis est que je desine un polygon dessu , donc lorsque je rend transparent ma FORM , mon dessin de mon polygon n'apparait plus , pk , et que faire pour que mon polygone apparaise ???

    merci d'avance
    amicalement lucas

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Le poligone est plein?
    N'oubliez pas de mettre le

  3. #3
    Membre régulier Avatar de Lucas42
    Inscrit en
    Janvier 2006
    Messages
    301
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 301
    Points : 97
    Points
    97
    Par défaut
    oui Vesta , le polygone est Remplie d'une couleur Rouge , Verte , Bleu , ..... selon les valeurs RGB que je fourni

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Tu pourrais me montrer le code qui rend ta feuille transparente?

    Tu utilise les API pour dessiner le polyg?
    N'oubliez pas de mettre le

  5. #5
    Membre régulier Avatar de Lucas42
    Inscrit en
    Janvier 2006
    Messages
    301
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 301
    Points : 97
    Points
    97
    Par défaut
    Je t'envoie ca demain , je suis plus au boulot la

  6. #6
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    ok... Je serai la vers 10-11h
    N'oubliez pas de mettre le

  7. #7
    Membre régulier Avatar de Lucas42
    Inscrit en
    Janvier 2006
    Messages
    301
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 301
    Points : 97
    Points
    97
    Par défaut
    Lu vesta , je n'ai pas vraiment de code pour rendre transparent le fond de la form de mon activeX , mais voici mon code qui me permet de tracer le polygon et le redimensionner grace à des groupes indexé de commandbutton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    Option Explicit
    Public largeur_vanne As Integer
    Public hauteur_vanne As Integer
    Public coord_x_nom_vanne As Integer
    Public coord_y_nom_vanne As Integer
    Public coord_x_remplissage As Integer
    Public coord_y1_remplissage As Integer
    Public coord_y2_remplissage As Integer
    Public Index As Integer
    Public etat_van As Integer
    Function TraceVanne2VoiesVerticale()
        ScaleMode = vbPixels        ' dessine en pixel
        ForeColor = vbBlack         ' couleur trait en noir
        Line (140, 70)-(largeur_vanne, 70)
        Line (140, hauteur_vanne)-(largeur_vanne, hauteur_vanne)
        Line (140, 70)-(largeur_vanne, hauteur_vanne)
        Line (140, hauteur_vanne)-(largeur_vanne, 70)
        FillStyle = vbFSSolid       ' la forme dessinée est un solide
    End Function
    Sub CouleurObjet(red As Integer, green As Integer, blue As Integer)
        FillColor = RGB(255, 0, 0)
        FloodFill hDC, coord_x_remplissage, coord_y1_remplissage, ForeColor        ' colori la partie supérieure
        FloodFill hDC, coord_x_remplissage, coord_y2_remplissage, ForeColor        ' colori la partie inférieure
    End Sub
    Function LargeurVanne()
        UserControl.Cls        ' efface le tracé de la vanne précédente
            Select Case Index
                Case 0
                    If largeur_vanne = 154 Then
                        TraceVanne2VoiesVerticale
                    Else
                        largeur_vanne = largeur_vanne - 2
     
                        coord_x_remplissage = coord_x_remplissage - 1
                        TraceVanne2VoiesVerticale
                    End If
                Case 1
                    If largeur_vanne = 300 Then
                        TraceVanne2VoiesVerticale
                    Else
                        largeur_vanne = largeur_vanne + 2
                        coord_x_remplissage = coord_x_remplissage + 1
                        TraceVanne2VoiesVerticale
                    End If
            End Select
    End Function
    Function HauteurVanne()
        UserControl.Cls        ' efface le tracé de la vanne précédente
            Select Case Index
                Case 0
                    If hauteur_vanne = 92 Then
                        TraceVanne2VoiesVerticale
                    Else
                        hauteur_vanne = hauteur_vanne - 2
                        TraceVanne2VoiesVerticale
                        coord_y1_remplissage = coord_y1_remplissage - 1
                        coord_y2_remplissage = coord_y2_remplissage - 1
                    End If
                Case 1
                    If hauteur_vanne = 300 Then
                        TraceVanne2VoiesVerticale
                    Else
                        hauteur_vanne = hauteur_vanne + 2
                        TraceVanne2VoiesVerticale
                        coord_y1_remplissage = coord_y1_remplissage + 1
                        coord_y2_remplissage = coord_y2_remplissage + 1
                    End If
            End Select
    End Function
    Private Sub UserControl_Initialize()
        coord_x_remplissage = 160
        coord_y1_remplissage = 105
        coord_y2_remplissage = 115
        Form2.Show
    End Sub
    Private Sub UserControl_Paint()
        largeur_vanne = 180
        hauteur_vanne = 150
        TraceVanne2VoiesVerticale
        'TraceVanne2Voies 10, 15, True
    End Sub

  8. #8
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    J'ai fait une procédure pour effacer toutes les régions d'une form qui sont d'une couleur donnée... Je vais essayer de le retrouver....

    Donc par exemple je donnais un fond vert a ma forme et tout ce qui restait en vert, je le fesait disparaitre
    N'oubliez pas de mettre le

  9. #9
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Voila je l'ai un peu modifié pour te montrer que ca marche avec des shapes... J'ai demandé d'enlever la couleur blanche...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Dim key As String, file As String, p, e
    Private Declare Function GetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long) As Long
    Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
    Private Declare Function CreateRectRgn Lib "gdi32" (ByVal x1 As Long, ByVal y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
    Private Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal x1 As Long, ByVal y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
    Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal x1 As Long, ByVal y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
    Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
    Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
    Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Declare Function ReleaseCapture Lib "user32" () As Long
    Private Type POINTAPI
       X As Long
       Y As Long
    End Type
    Private Const RGN_COPY = 5
    Const CoulFond = 13160660
    Private Const CreatedBy = "VBSFC 5"
    Private Const RegisteredTo = "MASTER"
    Private ResultRegion As Long
     
    Private Function CreateFormRegion(ScaleX As Single, ScaleY As Single, OffsetX As Integer, OffsetY As Integer) As Long
        Dim HolderRegion As Long, ObjectRegion As Long, nRet As Long, Counter As Integer
        Dim FormFont
        Dim PolyPoints() As POINTAPI
        ResultRegion = CreateRectRgn(0, 0, 0, 0)
        HolderRegion = CreateRectRgn(0, 0, 0, 0)
     
    '!Shaped Form Region Definition
    '!3,88,68,324,346,0,0,1
        ObjectRegion = CreateRectRgn(1, 1, 1, 1)
        nRet = CombineRgn(ResultRegion, ObjectRegion, ObjectRegion, RGN_COPY)
        DeleteObject ObjectRegion
     
    FormFont = 16777215
     
    Dim i, j, lenD
    For j = 1 To Form1.Width / Screen.TwipsPerPixelX
       For i = 1 To Form1.Height / Screen.TwipsPerPixelY
            If (Point(j, i) <> FormFont) Then
                lenD = 1
                Do While ((Point(j, i + lenD) <> FormFont) And (i + lenD < (Form1.Height / Screen.TwipsPerPixelY)))
                    lenD = lenD + 1
                Loop
                ObjectRegion = CreateRectRgn(j, i, j + 1, i + lenD)
                nRet = CombineRgn(HolderRegion, ResultRegion, ResultRegion, RGN_COPY)
                nRet = CombineRgn(ResultRegion, HolderRegion, ObjectRegion, 2)
                DeleteObject ObjectRegion
                i = i + lenD
            End If
        Next i
    Next j
     
        DeleteObject HolderRegion
        CreateFormRegion = ResultRegion
     
    End Function
    Mais prend plutot le fichier joint tu pigera mieu...
    N'oubliez pas de mettre le

  10. #10
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    tu as au l'occasion de jetter un oeuil a ce que je t'ai pasé Lucas?
    N'oubliez pas de mettre le

  11. #11
    Membre régulier Avatar de Lucas42
    Inscrit en
    Janvier 2006
    Messages
    301
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 301
    Points : 97
    Points
    97
    Par défaut
    oui oui , je suis en train de m'arracher les cheveux avec ton code ....
    j'essaye de dessiner un polygone dedans et ca me la colle tj en haut a gauche :s

    pourtant je definit bien la position des lignes à tracer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function TraceVanne2VoiesVerticale()
        ScaleMode = vbPixels        ' dessine en pixel
        ForeColor = vbBlack         ' couleur trait en noir
        Line (140, 70)-(180, 70)
        Line (140, 150)-(180, 150)
        Line (140, 70)-(180, 150)
        Line (140, 150)-(180, 70)
        FillStyle = vbFSSolid       ' la forme dessinée est un solide
    End Function
    et ca dans un module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Declare Sub FloodFill Lib "gdi32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long)

  12. #12
    Membre régulier Avatar de Lucas42
    Inscrit en
    Janvier 2006
    Messages
    301
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 301
    Points : 97
    Points
    97
    Par défaut
    Tu peux m'expliquer certain truc sur le programme ??? par exemple

    - ResultRegion
    - HolderRegion
    .......

  13. #13
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    En fait c'est simple, il fait des combinaisons de morceaux 'Regions' De feuille qu'il va combiner, en supprimant les espaces de rencontre de ces deux régions... Le code parcour chaque pixel de la feuille et supprime toutes les zones qui ont la couleur spécifiée...

    Donc tu dessine tout ce que tu veux dans la form en évitant une et une seule couleur, celle qui va devoir etre supprimée lors de l'affichage.

    Ici, j'ai choisis le blanc:
    Cette ligne permet de spécifier la couleur a enlever

    donc tu donne une couleur verte comme au cinéma à ta feuille tu reper le code couleur correspondant et tu le remplace a cet endroit...

    Compris un peu mieu
    N'oubliez pas de mettre le

  14. #14
    Membre régulier Avatar de Lucas42
    Inscrit en
    Janvier 2006
    Messages
    301
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 301
    Points : 97
    Points
    97
    Par défaut
    j'avais compris ca , j'ai changer ton code pour la couleure blanche par
    :14215660 pour la couleur de fond de la form !!

    Aprés ya plein de trucs que je saisi pas , comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Private Function CreateFormRegion(ScaleX As Single, _
                                      ScaleY As Single, _
                                      OffsetX As Integer, _
                                      OffsetY As Integer) As Long
        Dim HolderRegion As Long, ObjectRegion As Long, nRet As Long
        Dim Counter As Integer
        Dim FormFont
        Dim PolyPoints() As POINTAPI
        ResultRegion = CreateRectRgn(0, 0, 0, 0)
        HolderRegion = CreateRectRgn(0, 0, 0, 0)
    '!Shaped Form Region Definition
    '!3,88,68,324,346,0,0,1
        ObjectRegion = CreateRectRgn(0, 0, 0, 0)
        nRet = CombineRgn(ResultRegion, ObjectRegion, ObjectRegion, RGN_COPY)
        DeleteObject ObjectRegion
    c'est la que ca créé des regions mais le soucis est que vu que les coordonnées des points sont ttes à 0 , et ben , ca efface effectivement tous , mais regarde fait ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ObjectRegion = CreateRectRgn(1, 1, 100, 100)
    a la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ObjectRegion = CreateRectRgn(1, 1, 1, 1)
    et tu verra que ca dessine un carré en haut a gauche de 100*100 , tu voi un coin dans le cercle gauche :s
    Et sur internet RIEN , a propos de ObjetRegion ou ResultRegion

  15. #15
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    J'ai du faire pas mal de test a l'époque alors c'est vrai kil peut rester des choses qui ne servent a rien... Je vais nettoyer et commenter ok?
    N'oubliez pas de mettre le

  16. #16
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Voila le code est commenté et un petit lien pour que tu puisse bien voir ce que veulent dirent les parametres comme RGN_OR etc

    http://www.codeproject.com/gdi/rgnguide.asp
    Fichiers attachés Fichiers attachés
    N'oubliez pas de mettre le

  17. #17
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674

Discussions similaires

  1. [CR 8.5]Rendre transparent le fond d'un graph
    Par olivbzh dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 04/12/2008, 10h17
  2. rendre invisible les partie d'une form en fonction de leur couleur?
    Par Jayceblaster dans le forum Windows Forms
    Réponses: 1
    Dernier message: 09/07/2007, 14h41
  3. [VB6] position de l'impression d'une form sur une feuille
    Par cisnake dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 22/05/2006, 01h06
  4. [VB6] Inserer Windows Media player dans une form [Debutant]
    Par MegaBigBoss dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 04/03/2006, 12h55
  5. [VB6][Formulaire]Appliquer un Scrollbar a une Form
    Par Boil dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 09/11/2002, 03h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo