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
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
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é?![]()
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 ....
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
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)
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 !
Partager