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] Colorier une partie d'une PICTUREBOX


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] Colorier une partie d'une PICTUREBOX
    Bonjour , je vous expose mon probléme , j'ai inseré une PictureBox dans mon UserControl , et dans ma PictureBox j'ai dessiné un polygon .
    Or j'aimerai bien pouvoir colorer l'interieure de mon polygone et non l'interieure de ma PictureBox .
    J'ai fais ceci , mais ca colorie toute ma PictureBox , pourtant les coordonnée saisi tombe bien dans la surface de mon polygon


    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
    Private Sub UserControl_Initialize()              ' toutes les initialisations
        Picture1.Top = 32
        Picture1.Left = 94
        Picture1.Height = 32
        Picture1.Width = 17
        Picture2.Top = 8
        Picture2.Left = 56
        Picture2.Height = 17
        Picture2.Width = 92
        largeur_vanne = 14
        hauteur_vanne = 28
        coord_x_remplissage = 7
        coord_y1_remplissage = 14
        coord_y2_remplissage = 15
    End Sub
     
    Private Sub UserControl_Paint()
        TraceVanne2VoiesVerticale
    End Sub
     
    Function TraceVanne2VoiesVerticale()              ' fonction permet de TRACER le polygon VANNE
        Picture1.ScaleMode = vbPixels              ' dessine en pixel
        Picture1.ForeColor = vbBlack              ' couleur trait en noir
        Picture1.Line (0, 0)-(largeur_vanne, 0)              ' horizontale h
        Picture1.Line (0, 0)-(largeur_vanne, hauteur_vanne)              ' oblique h.g - b.d
        Picture1.Line (largeur_vanne, 0)-(0, hauteur_vanne)              ' oblique h.d - b.g
        Picture1.Line (0, hauteur_vanne)-(largeur_vanne, hauteur_vanne)              ' horizontale b
        Picture1.FillStyle = vbFSSolid              ' la forme dessinée est un solide
    End Function
     
    Sub CouleurObjet(rouge As Integer, vert As Integer, bleu As Integer)              ' fonction permet couleur vanne
        Picture1.FillColor = RGB(rouge, vert, bleu)              ' paramétres à modifier
        FloodFill Picture1.hDC, coord_x_remplissage, coord_y1_remplissage, ForeColor              ' colori la partie supérieure
        FloodFill Picture1.hDC, coord_x_remplissage, coord_y2_remplissage, ForeColor              ' colori la partie inférieure
    End Sub
    et bien sur ceci 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)
    merci d'avance
    amicalement lucas

    pour ceux qui veulent comprendre pk il y a certaines variables , voila l'intégralité du code
    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    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 Choix As Integer
    Public etat_van As Integer
    Private Sub UserControl_Initialize()              ' toutes les initialisations
        Picture1.Top = 32
        Picture1.Left = 94
        Picture1.Height = 32
        Picture1.Width = 17
        Picture2.Top = 8
        Picture2.Left = 56
        Picture2.Height = 17
        Picture2.Width = 92
        largeur_vanne = 14
        hauteur_vanne = 28
        coord_x_remplissage = 7
        coord_y1_remplissage = 13
        coord_y2_remplissage = 15
    End Sub
    Private Sub UserControl_Paint()
        TraceVanne2VoiesVerticale
    End Sub
    Private Sub Command1_Click(Index As Integer)              ' choix position NOM de la VANNE
        Select Case Index
            Case 0
                Choix = 1
                Picture2.Left = (96 + largeur_vanne)
                Picture2.Top = (23.5 + (hauteur_vanne / 2))
            Case 1
                Choix = 2
                Picture2.Left = (0)
                Picture2.Top = (23.5 + (hauteur_vanne / 2))
        End Select
    End Sub
    Function TraceVanne2VoiesVerticale()              ' fonction permet de TRACER le polygon VANNE
        Picture1.ScaleMode = vbPixels              ' dessine en pixel
        Picture1.ForeColor = vbBlack              ' couleur trait en noir
        Picture1.Line (0, 0)-(largeur_vanne, 0)              ' horizontale h
        Picture1.Line (0, 0)-(largeur_vanne, hauteur_vanne)              ' oblique h.g - b.d
        Picture1.Line (largeur_vanne, 0)-(0, hauteur_vanne)              ' oblique h.d - b.g
        Picture1.Line (0, hauteur_vanne)-(largeur_vanne, hauteur_vanne)              ' horizontale b
        Picture1.FillStyle = vbFSSolid              ' la forme dessinée est un solide
    End Function
    Sub CouleurObjet(rouge As Integer, vert As Integer, bleu As Integer)              ' fonction permet couleur vanne
        Picture1.FillColor = RGB(rouge, vert, bleu)              ' paramétres à modifier
        FloodFill Picture1.hDC, coord_x_remplissage, coord_y1_remplissage, ForeColor              ' colori la partie supérieure
        FloodFill Picture1.hDC, coord_x_remplissage, coord_y2_remplissage, ForeColor              ' colori la partie inférieure
    End Sub
    Private Sub Command2_Click(Index As Integer)
        Picture1.Cls              ' efface le tracé de la vanne précédente
            Select Case Index
                Case 0
                    If largeur_vanne = 14 Then              ' limite mini pour largeur vanne
                        TraceVanne2VoiesVerticale
                    Else
                        largeur_vanne = largeur_vanne - 2
                        Picture1.Width = Picture1.Width - 2
                        Picture2.Left = Picture2.Left - 1
                        coord_x_remplissage = coord_x_remplissage - 1
                            If Choix = 1 Then
                                Picture2.Left = (96 + largeur_vanne)
                            End If
                            If Choix = 2 Then
                                Picture2.Left = 0
                            End If
                        TraceVanne2VoiesVerticale
                    End If
                Case 1
                    If largeur_vanne = 100 Then              ' limite max pour largeur vanne
                        TraceVanne2VoiesVerticale
                            Else
                                largeur_vanne = largeur_vanne + 2
                                Picture1.Width = Picture1.Width + 2
                                Picture2.Left = Picture2.Left + 1
                                coord_x_remplissage = coord_x_remplissage + 1
                            If Choix = 1 Then
                                Picture2.Left = (96 + largeur_vanne)
                            End If
                            If Choix = 2 Then
                                Picture2.Left = 0
                            End If
                        TraceVanne2VoiesVerticale
                    End If
            End Select
    End Sub
    Private Sub Command3_Click(Index As Integer)
        Picture1.Cls              ' efface le tracé de la vanne précédente
            Select Case Index
                Case 0
                    If hauteur_vanne = 28 Then              ' limite mini pour hauteur vanne
                        TraceVanne2VoiesVerticale
                    Else
                        hauteur_vanne = hauteur_vanne - 2
                        Picture1.Height = Picture1.Height - 2
                        coord_y1_remplissage = coord_y1_remplissage - 1
                        coord_y2_remplissage = coord_y2_remplissage - 1
                            If Choix = 0 Then
                                Picture2.Top = Picture2.Top
                            Else
                                Picture2.Top = (23.5 + (hauteur_vanne / 2))
                            End If
                        TraceVanne2VoiesVerticale
                    End If
                Case 1
                    If hauteur_vanne = 198 Then              ' limite max pour hauteur vanne
                        TraceVanne2VoiesVerticale
                    Else
                        hauteur_vanne = hauteur_vanne + 2
                        Picture1.Height = Picture1.Height + 2
                        coord_y1_remplissage = coord_y1_remplissage + 1
                        coord_y2_remplissage = coord_y2_remplissage + 1
                            If Choix = 0 Then
                                Picture2.Top = Picture2.Top
                            Else
                                Picture2.Top = (23.5 + (hauteur_vanne / 2))
                            End If
                        TraceVanne2VoiesVerticale
                    End If
            End Select
    End Sub
    Private Sub Timer1_Timer()
        Label3.Caption = largeur_vanne
        Label4.Caption = hauteur_vanne
        Select Case etat_van
                Case 0
                    CouleurObjet CInt(255), CInt(0), CInt(0)
                Case 1
                    CouleurObjet CInt(0), CInt(255), CInt(0)
                Case 2
                    CouleurObjet CInt(0), CInt(0), CInt(255)
            End Select
    End Sub

  2. #2
    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
    Par défaut
    Ben ....
    Voilà un nouveau "post", le énième, toujours autour du même pot...
    Et tout celà pourquoi ?
    Pour découvrir in fine que tu ne pourras pas modifier cette couleur depuis l'appli sur laquelle tu auras installé ton activex sans avoir construit les propriétés nécessaires !
    modifier une couleur revient à redessiner avec la même couleur ou à utiliser floodfill.... mais, vraiment, j'ai des difficultés à comprendre pourquoi tu nous embarques depuis de nombreux jours et toujours avec le même sujet, dans ce truc qui n'aboutira à rien sans avoir construit les propriétés nécessaires...
    A quand le nouveau sujet pour le même polygone placé dans un activex qui devient de plus en plus surprenant ?
    La première question, d'ailleurs : Pourquoi un activex pour faire ce machin-là ?
    Le développement d'un activex demande, je te l'ai déjà dit et répété, assez de maitrise. On ne développe pas un activex pour faire ce que tu fais, mais pour faire des choses en général complexes !
    On ne développe pas non plus un activex pour une seule application ... le but d'un activex est de pouvoir être incorporé dans des applications très différentes les unes des autres et faciliter ainsi la tâche des développeurs qui vont l'incorporer dans leur application (et ce n'est manifestement pas le cas de ton activex)
    La conclusion est simple : ton "patron"/prof ne veut pas tester tes capacités à dessiner un polygone et à lui attribuer des couleurs (il s'en moque certainement) , mais bel et bien tes capacités à construire un activex et ses propriétés. Il aurait pu aussi bien te demander de modifier, depuis une appli dans laquelle tu incorporais un activex, le texte figurant sur un simple label du dit activex.
    Et toi (et ce depuis le début), tu t'agites dans tous les sens sur des broutilles annexes au lieu de te concentrer sur l'essentiel de cet "exercice" : comment construire les propriétés d'un activex !
    Je t'engage donc à faire un tour dans les tutos et à t'intéresser enfin et surtout à la partie essentielle de ton exercice : construire un activex et ses propriétés !

Discussions similaires

  1. donner une couleur a une partie d'une forme
    Par ralf91 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/04/2008, 17h02
  2. Réponses: 1
    Dernier message: 04/04/2008, 12h14
  3. Sélectionner seulement une partie d'une valeur d'une cellule
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2007, 11h05
  4. masquer une partie d'une vidéo par une banniere
    Par lezabour dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/10/2006, 16h47
  5. copier une partie d'une image vers une autre
    Par gregcat dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2006, 13h39

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