Tracer un cercle plein (un disque quoi)

Résolu
plhea Messages postés 45 Date d'inscription dimanche 13 mars 2005 Statut Membre Dernière intervention 19 mars 2006 - 24 sept. 2005 à 22:58
P__ROMEO Messages postés 294 Date d'inscription vendredi 25 février 2005 Statut Membre 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

8 réponses

plhea Messages postés 45 Date d'inscription dimanche 13 mars 2005 Statut Membre Dernière intervention 19 mars 2006
25 sept. 2005 à 10:44
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
3
P__ROMEO Messages postés 294 Date d'inscription vendredi 25 février 2005 Statut Membre Dernière intervention 9 mars 2006 1
25 sept. 2005 à 01:04
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
2
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
25 sept. 2005 à 00:54
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
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
25 sept. 2005 à 00:56
Sinon pourquoi n'utilises-tu pas l'objet Shape de vb6 ??


<HR>

Si la réponse te conviens merci de l'accepter
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
P__ROMEO Messages postés 294 Date d'inscription vendredi 25 février 2005 Statut Membre Dernière intervention 9 mars 2006 1
25 sept. 2005 à 01:11
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+
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
25 sept. 2005 à 01:14
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
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
25 sept. 2005 à 01:15
marche impeccable ton code sympa


<HR>

Si la réponse te conviens merci de l'accepter
0
P__ROMEO Messages postés 294 Date d'inscription vendredi 25 février 2005 Statut Membre Dernière intervention 9 mars 2006 1
25 sept. 2005 à 14:16
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+
0
Rejoignez-nous