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] Comment créer un objet TRIANGLE


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Lucas42
    Inscrit en
    Janvier 2006
    Messages
    301
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 301
    Par défaut [VB6] Comment créer un objet TRIANGLE
    Bonjour , j'aimerai savoir comment faire pour créer un OBJET tels que shape carré ou cercle , mais cette fois si , TRIANGLE ??

    merci d'avance
    amicalement lucas

  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

  3. #3
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    et le post est plus vieux que celui-ci.

    à-t'on affaire à un skysofrène, à une personne à la mémoire infonctionnelle ou plus simplement à un floodeur invétéré?

  4. #4
    Membre éclairé Avatar de Lucas42
    Inscrit en
    Janvier 2006
    Messages
    301
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 301
    Par défaut
    mais lol , si je vous demande comment un OBJET triangle , c'est bien parcke le code que je vous avez presenté ne le faisait pas , il dessiné bien un TRIANGLE , mais ce n'était pas un OBJET , il n'avait aucune propriété tel que VISIBLE , BACKCOLOR ....

  5. #5
    Membre émérite
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Par défaut
    Je pense que tu finira bien par comprendre...

    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
    Private Type COORD
        x As Long
        y As Long
    End Type
    Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As Any, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
    Private Declare Function Polygon Lib "gdi32" (ByVal hdc As Long, lpPoint As Any, ByVal nCount As Long) As Long
    Private Declare Function FillRgn Lib "gdi32" (ByVal hdc As Long, ByVal hRgn As Long, ByVal hBrush As Long) As Long
    Private Declare Function GetStockObject Lib "gdi32" (ByVal nIndex As Long) As Long
    Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
    Const ALTERNATE = 1
    Const WINDING = 2
    Const BLACKBRUSH = 4
    Private Sub Form_Paint()
    Dim poly(1 To 4) As COORD, NumCoords As Long, hBrush As Long, hRgn As Long
        Me.Cls
         vbPoly = "Diabolo"
     
    If vbPoly = "Triangle" Then
        NumCoords = 3
        Me.ScaleMode = vbPixels
        poly(1).x = Form1.ScaleWidth / 2
        poly(1).y = Form1.ScaleHeight / 2
        poly(2).x = Form1.ScaleWidth / 4
        poly(2).y = 3 * Form1.ScaleHeight / 4
        poly(3).x = 3 * Form1.ScaleWidth / 4
        poly(3).y = 3 * Form1.ScaleHeight / 4
    End If
     
     
    If vbPoly = "Diabolo" Then
        NumCoords = 4
        Me.ScaleMode = vbPixels
        poly(1).x = Form1.ScaleWidth / 4
        poly(1).y = Form1.ScaleHeight / 4
        poly(2).x = 3 * Form1.ScaleWidth / 4
        poly(2).y = Form1.ScaleHeight / 4
        poly(3).x = Form1.ScaleWidth / 4
        poly(3).y = 3 * Form1.ScaleHeight / 4
        poly(4).x = 3 * Form1.ScaleWidth / 4
        poly(4).y = 3 * Form1.ScaleHeight / 4
    End If
     
        hBrush = GetStockObject(BLACKBRUSH)
        hRgn = CreatePolygonRgn(poly(1), NumCoords, ALTERNATE)
        If hRgn Then FillRgn Me.hdc, hRgn, hBrush
        DeleteObject hRgn
    End Sub
    Private Sub Form_Resize()
        Form_Paint
    End Sub

  6. #6
    Membre émérite
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Par défaut
    Justement, tu doit mettre des variables par exemple dans ton code du genre VisibleDiabolo = True ce ne doit pas etre trop compliqué a mettre si? Et alors lors du visible=false tu fais un repaint et dans le repaint tu test la prop
    pour ce qui est de la couleur.. Je sais pas mais bon...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     hBrush = GetStockObject(BLACKBRUSH)

  7. #7
    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
    Par défaut
    A LUCAS !!!
    VB n'a pas fait un tel contrôle car il ne servait à rien et qu'un triangle est, de surcroit une figure indéformable !!!!
    J'interviens ici car trop c'est trop !
    Tu as littéralement inondé ce forum pour une babiole :
    200 messages à ce seul sujet rédigés par toi
    plus du triple avec les réponses qui t'ont été faites !
    cela fait beaucoup pour bien peu !!!!!
    *Et que je te cherche sur le Web une "soluce".... et que je te la manipule.... et que ceci ... et que cela....
    à coup de copier-collers dans tous les sens... et que je te reviens avec une api, un floodfill... et je ne sais quoi d'autre...
    et que je te reviens en voulant faire clignoter... puis changer la couleur.... et que d'autres en rajoutent dans tous les sens ...
    et en avant... et en arrière....
    Alors : j'en ai personnellement assez de ce cirque à 2 sous espagnols et vais y mettre un terme, car cela m'apparaît nécessaire !
    Qu'est un triangle dans un rectangle ? ce n'est jamais que 2 segments reliant chacun des 2 points de la base au milieu du côté opposé à la base.
    Qu'est ton "sablier" dans un rectangle ? ce n'est jamais que la construction des deux diagonales de ce rectangle
    comment construire ces segments ? par calcul arithmétique élémentaire (niveau primaire)
    Qu'est un remplissage ? une succession de segments
    Quelle est la couleur de remplissage ? celle donnée aux segments successifs .
    Comment se traduit la "transparence" du contour ? en donnant simplement à ce contour la couleur du fond sur lequel est le rectangle (la picturebox)
    Comment fait-on tout cela ? le plus bêtement du monde !
    Alors :
    Voilà un exemple paramétrable pour un triangle avec la pointe en haut.
    Sont paramétrables les dimensions de la picturebox (donc du triangle) et la couleur du triangle
    Sur une form :
    un bouton de commande command1 et une picturebox picture1 (mets la au centre, pour éviter les débordements et fais une Form assez grande pour tes essais !
    donne la couleur de fond que tu veux à ta Form (la picturebox s'y adaptera)
    Change ensuite à ta guise les paramètres couleur et dimensions... et lance...

    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
     
    Private Sub Command1_Click()
      Dim couleur As Long, largeur As Integer, hauteur As Integer, sens As String
      couleur = RGB(0, 255, 255)
      largeur = 1000
      hauteur = 1000
      triangle couleur, largeur, hauteur
    End Sub
    Sub triangle(couleur, largeur, hauteur)
        Dim CX, CY, F, F1, F2, I
        With Picture1
          .Width = largeur
          .Height = hauteur
          .BackColor = Me.BackColor
          .BorderStyle = 0
        End With
        DoEvents
        Picture1.ScaleMode = 3
        CX = Picture1.ScaleWidth / 2
        CY = Picture1.ScaleHeight
        Picture1.DrawWidth = 3
        Picture1.ForeColor = couleur
        For I = 0 To 50 Step 2
          F = I / 50
          F1 = 1 - F
          F2 = 1 + F
          Picture1.Line (CX * F1, CY)-(CX, CY * F1)
          Picture1.Line -(CX * F2, CY)
          Picture1.Line -(CX, CY * F2)
        Next I
        DoEvents
    End Sub

    Voilà ! C'était tout ! En lieu et place de tout ce déploiement que j'ai vu provoquer tous ces "posts"
    Ne viens maintenant pas m'interroger sur comment en faire un avec la tête en bas ou directement un en forme de 2 triangles symétriques !
    Tu fais comme moi : tu calcules (arithmétique élémentaire)... un point c'est tout !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/08/2008, 09h12
  2. Réponses: 2
    Dernier message: 30/01/2007, 09h02
  3. Réponses: 3
    Dernier message: 30/01/2007, 09h01
  4. [VB6]comment créer une dll
    Par kboo dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 12/04/2006, 14h32
  5. [VB6][débutant] Créer un objet COM pour XSLT
    Par trent94 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 25/01/2006, 15h42

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