Tracer un cercle plein (un disque quoi) [Résolu]

plhea
Messages postés
45
Date d'inscription
dimanche 13 mars 2005
Dernière intervention
19 mars 2006
- 24 sept. 2005 à 22:58 - Dernière réponse : P__ROMEO
Messages postés
311
Date d'inscription
vendredi 25 février 2005
Dernière intervention
9 mars 2006
- 25 sept. 2005 à 14:16
bonjour j'ai un petit problème il faut que je trace un disque et non pas un cercle c'est à dire un cercle plein :)
est ce qu'on est obligé de procéder comme ça :

For i = 1 To Rayon
Circle (20, 20), i, vbRed
Next i

je n'ai rien contre ça mais c'est incroyablement lent...
avez vous mieux?
plhea
Afficher la suite 

8 réponses

Meilleure réponse
plhea
Messages postés
45
Date d'inscription
dimanche 13 mars 2005
Dernière intervention
19 mars 2006
- 25 sept. 2005 à 10:44
3
Merci
waouuuuu c'est parfait romeo!!
exactement ce que je cherchais c'est hyper rapide!
une petite modification quand même pour avoir un disque simple avec une seule couleur...

Private Sub Form_Click()
Dim xCentre, yCentre, rayon As Integer


ForeColor = vbRed
FillColor = vbRed
FillStyle = vbFSSolid


Form1.ScaleHeight = 100 'optionnel
Form1.ScaleWidth = 100
xCentre = 50
yCentre = 20
rayon = 10



Circle (xCentre, yCentre), rayon



End Sub

ici on à un disque et infiniment plus rapidement qu'avec la méthode que j'avais proposée au début
merci beaucoup romeo mes problèmes sont résolus

plhea

Merci plhea 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

P__ROMEO
Messages postés
311
Date d'inscription
vendredi 25 février 2005
Dernière intervention
9 mars 2006
- 25 sept. 2005 à 01:04
2
Merci
j'ai autre chose plus simple.
copie et cole. en cliquant avec le bouton gauche de la souris sur ta feuille, le disque se crée:

'---- Click sur la feuille
Private Sub Form_Click()
Dim XCentre, YCentre, Rayon As Integer


'---- Attributs
ForeColor = vbRed 'Rouge (contour)
FillColor = vbYellow 'Jaune (intérieure)
FillStyle = vbFSSolid 'Plein
DrawWidth = 5


'---- Calcule centre et rayon
XCentre = ScaleWidth / 2
YCentre = ScaleHeight / 2
If XCentre > YCentre Then
Rayon = XCentre
Else
Rayon = YCentre
End If


'---- Trace le cercle
Circle (XCentre, YCentre), Rayon, , , , YCentre / XCentre
End Sub
cs_Willi
Messages postés
2381
Date d'inscription
jeudi 12 juillet 2001
Dernière intervention
13 février 2015
- 25 sept. 2005 à 00:54
0
Merci
un disque ou un cercle je ne comprend pas c'est confus pour moi
enfin teste cela colle le code dans une feuille
pour tester click droit de la souris en déplacant celle-ci pour tracer le cercle

Option Explicit


Private m_Dragging As Boolean
Private X1 As Single
Private Y1 As Single
Private X2 As Single
Private Y2 As Single


Private Sub DrawCircle()
Dim cx As Single
Dim cy As Single
Dim dx As Single
Dim dy As Single
Dim radius As Single

cx = X1
cy = Y1
dx = X1 - X2
dy = Y1 - Y2

radius = Sqr(dx * dx + dy * dy)
Circle (cx, cy), radius
End Sub


Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
m_Dragging = True


DrawMode = vbInvert


X1 = X
Y1 = Y
X2 = X
Y2 = Y


DrawCircle
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Not m_Dragging Then Exit Sub

DrawCircle


X2 = X
Y2 = Y


' Draw the new circle.
DrawCircle
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
m_Dragging = False

DrawMode = vbCopyPen
ForeColor = vbRed
DrawCircle
ForeColor = vbBlack
End Sub



<HR>



Si la réponse te conviens merci de l'accepter
cs_Willi
Messages postés
2381
Date d'inscription
jeudi 12 juillet 2001
Dernière intervention
13 février 2015
- 25 sept. 2005 à 00:56
0
Merci
Sinon pourquoi n'utilises-tu pas l'objet Shape de vb6 ??


<HR>

Si la réponse te conviens merci de l'accepter
P__ROMEO
Messages postés
311
Date d'inscription
vendredi 25 février 2005
Dernière intervention
9 mars 2006
- 25 sept. 2005 à 01:11
0
Merci
Willi, ton code est intéressant, je l'ai ajouté à ma liste de code, mais, le cercle créé n'est pas plein.
quelques lignes de codes en plus feront l'affaire.
A+
cs_Willi
Messages postés
2381
Date d'inscription
jeudi 12 juillet 2001
Dernière intervention
13 février 2015
- 25 sept. 2005 à 01:14
0
Merci
Oui mais c'est que j'avais pas trop pigé le sens "je trace un disque et non pas un cercle c'est à dire un cercle plein"
Je vais essayer ton code de suite sa ne peut etre que interessant


<HR>

Si la réponse te conviens merci de l'accepter
cs_Willi
Messages postés
2381
Date d'inscription
jeudi 12 juillet 2001
Dernière intervention
13 février 2015
- 25 sept. 2005 à 01:15
0
Merci
marche impeccable ton code sympa


<HR>

Si la réponse te conviens merci de l'accepter
P__ROMEO
Messages postés
311
Date d'inscription
vendredi 25 février 2005
Dernière intervention
9 mars 2006
- 25 sept. 2005 à 14:16
0
Merci
Ce n'est rien. tout le plaisir pour moi.
et, en passant, copies la fonction de Willi, elle peut te servir. (comme ca tu n'auras pas à chercher le jour ou tu
la voudra.)

A+

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.