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 :

POO et shape de forme cercle, cliquable


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Points : 27
    Points
    27
    Par défaut POO et shape de forme cercle, cliquable
    Bonjour à tous,

    j'ai défini une petite appli qui bloque le clavier et évite qu'on joue avec mon écran quand je me lève.
    j'ai défini un form qui fait tout l'écran. Je souhaite affiché sur mon écran des cercles cliquables qui affichent un message comique.
    j'ai trouvé ce tuto mais il travaille avec des rectangles et je ne vois pas comment les transformer en cercle (1er) et ensuite créer des evenements cliquables dessus (2eme).
    http://xo.developpez.com/tutoriel/vb6/poo_vb6/

    Quelqu'un aurait des pistes à me fournir ?

    Merci de aide.

    PS: je joins ma petite appli. Pour sortir, il fait cliquer sur le bouton invisible en haut à gauche de l'écran. Je voudrais remplacer les cases à cocher par des cercles que je positionnerait de façon aléatoire sur l'écran.

    Suite à la soumission de ma demande, j'ai vu le lien suivant:
    https://www.developpez.net/forums/d7...es-cliquables/

    j'étudie...
    Fichiers attachés Fichiers attachés

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 174
    Points
    17 174
    Par défaut
    Salut

    Je te propose un code qui te permet de donner n'importe quelle forme à un PictureBox.
    Sur le Form, 1 PicureBox et ce
    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
    Option Explicit
     
    '**** pour réaliser la Form suivant l'image chargé dans sa propriété Picture ****
    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 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 Const RGN_OR = 2
    'fonction beaucoup plus rapide que Point et Step de VB
    Private Declare Function GetPixel Lib "gdi32" ( _
        ByVal hdc As Long, _
        ByVal X As Long, _
        ByVal Y As Long) As Long
    Dim StartX As Long, StartY As Long
    Dim NewLeft As Long, NewTop As Long
    Private Sub Form_Load()
    Me.ScaleMode = vbPixels: Picture1.ScaleMode = vbPixels
    Picture1.AutoRedraw = True: Picture1.AutoSize = True
    Picture1.Picture = LoadPicture(App.Path & "\Compos4.bmp") '***************** mettre le nom de ton fichier ***************
    DecoupePicture Picture1
    End Sub
     
    Sub DecoupePicture(ThePict As PictureBox)
    'procedure pour créer une forme non standard de Picture1
    Dim lngColor As Long
    lngColor = GetPixel(ThePict.hdc, 0, 0) 'couleur du pixel en haut à gauche de l'image, couleur devant être transparente
     
    'le code suivant n'est pas de moi mais d'avigeilpro, merci a lui
    'l'original ce trouve sur DVP a l'adresse
    'http://www.developpez.net/forums/showpost.php?p=2252020&postcount=4
    Dim lngX As Long, lngY As Long
    Dim lngYDeb As Long
    Dim lngYFin As Long
    Dim hRgn As Long, hRgnTemp As Long
    Dim lngDummy As Long
    Dim bStat As Boolean
     
    DoEvents
     
    For lngX = 0 To ThePict.ScaleWidth - 1 'balayage de chaque pixels en largeur
        bStat = False
        For lngY = 0 To ThePict.ScaleHeight - 1 'balayage de chaque pixels en hauteur
            If bStat Then
                If GetPixel(ThePict.hdc, lngX, lngY) = lngColor Or _
                        lngY = ThePict.ScaleHeight Then
                    lngYFin = lngY
                    If hRgn = 0 Then
                        hRgn = CreateRectRgn(lngX, lngYDeb, lngX + 1, lngYFin)
                    Else
                        hRgnTemp = CreateRectRgn(lngX, lngYDeb, lngX + 1, lngYFin)
                        lngDummy = CombineRgn(hRgn, hRgn, hRgnTemp, RGN_OR)
                        DeleteObject hRgnTemp
                    End If
                    bStat = False
                End If
             Else
                If GetPixel(ThePict.hdc, lngX, lngY) <> lngColor Then
                    lngYDeb = lngY
                    lngYFin = lngY
                    bStat = True
                End If
            End If
        Next
    Next
    DoEvents
    lngDummy = SetWindowRgn(ThePict.hWnd, hRgn, True) 'affectation de la construction a la Form
    lngDummy = DeleteObject(hRgn)
     
    End Sub
    Près requis, une image représentant la forme que tu désires, avec une couleur unique qui sera la couleur transparente, j'ai pris l'habitude de mettre cette couleur dans le pixel en haut à gauche de l'image (coordonnée 0,0).
    Cette image tu l'as sauvegarde en .BMP, tu l'as charge soit directement dans le code (ligne 19) soit en desing.
    Pour rendre la couleur transparente, tu passes le nom du PictureBox à la procédure DecoupePicture.
    La forme crée du PictureBox te donne la possibilité d'avoir toutes le méthode de l'objet.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

Discussions similaires

  1. [C++ Builder] Form non-cliquable
    Par millecius dans le forum C++
    Réponses: 5
    Dernier message: 03/02/2016, 11h42
  2. [XL-2007] Macro pour selectionner et copier une forme (cercle) dans une case
    Par pit22 dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 27/01/2014, 09h59
  3. [JpGraph] Comment insérer des formes (cercles rectangles) SUR un graphique ?
    Par ypcman dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 02/08/2012, 12h36
  4. Connaitre les cellules sous une forme (cercle par exemple)
    Par fanygui dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/02/2012, 08h37
  5. Formes graphiques cliquables
    Par Niak74 dans le forum Qt
    Réponses: 4
    Dernier message: 07/05/2009, 10h25

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