OVH Cloud OVH Cloud

Tracer un arc de cercle

4 réponses
Avatar
Papou
Bonjour a vous tous.
Je travail avec VB 4 Win XP. J'ai créé un programme qui affiche un rayon
mobile à l'écran. J'aimerais avoir l'arc de cercle tracé par le mouvement du
rayon à l'écran. Tout ce que j'ai réussi à faire c'est de tracer un cercle
avec le rayon donné. Je ne voudrais que la partie parcouru par le rayon, par
exemple 30 °. En fait je voudrais une pointe de tarte.

Merci pour votre aide.

4 réponses

Avatar
Jean-Marc
"Papou" a écrit dans le message de
news:
Bonjour a vous tous.
Je travail avec VB 4 Win XP. J'ai créé un programme qui affiche un


rayon
mobile à l'écran. J'aimerais avoir l'arc de cercle tracé par le


mouvement du
rayon à l'écran. Tout ce que j'ai réussi à faire c'est de tracer un


cercle
avec le rayon donné. Je ne voudrais que la partie parcouru par le


rayon, par
exemple 30 °. En fait je voudrais une pointe de tarte.



Hello,

Et voici une succulent pointe de tarte, toute chaude!!


Option Explicit
Const PI As Double = 3.141592657

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Command1_Click()
Dim xc As Single, yc As Single
Dim rayon As Single
Dim tarte As Single
Dim i As Double
Dim x1 As Single, y1 As Single, x2 As Single, y2 As Single


xc = Picture1.Width / 2
yc = Picture1.Height / 2

rayon = Picture1.Width / 3

tarte = PI / 6

Do While (1)
For i = -PI To PI Step PI / 100
x1 = xc + rayon * Cos(i)
y1 = yc + rayon * Sin(i)

x2 = xc + rayon * Cos(i + tarte)
y2 = yc + rayon * Sin(i + tarte)

Picture1.Line (xc, yc)-(x1, y1), RGB(0, 0, 0)
Picture1.Line (xc, yc)-(x2, y2), RGB(0, 0, 0)
Picture1.Circle (xc, yc), rayon, RGB(0, 0, 0), i + tarte, i
DoEvents
Sleep (100)
Picture1.Line (xc, yc)-(x1, y1), RGB(255, 255, 255)
Picture1.Line (xc, yc)-(x2, y2), RGB(255, 255, 255)
Picture1.Circle (xc, yc), rayon, RGB(255, 255, 255), i +
tarte, i
Next i

Loop


End Sub

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Avatar
Jean-Marc
lol, j'ai posté un peu vite!
Ca marche très bien entre -pi et pi, mais il faut rectifier
les angles pour circle entre pi et pi/2.

Je laisse au lecteur le soin de le faire :-)

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Avatar
Patrice Henrio
Bonsoir Jean-Marc

es-tu bien persuadé que ton
do while(1)
loop

va faire progresser notre visiteur qui semble en être au ba-BA

Voici ce que dit la MSDN
Circle, méthode
Dessine un cercle, une ellipse ou un arc sur un objet.

Syntaxe

object.Circle [Step] (x, y), radius, [color, start, end, aspect]

La syntaxe de la méthode Circle comprend les qualificateurs d'objets et les
éléments suivants :

Élément Description
object Facultatif.Expression d'objet qui correspond à un objet
figurant dans la rubrique "Application". Si object est omis, l'objet Form
ayant lefocus remplace l'espace réservé object.
Step Facultatif.Mot clé qui spécifie que le centre du cercle, de
l'ellipse ou de l'arc est relatif aux coordonnées courantes précisées par
les propriétés CurrentX et CurrentY de l'objet.
(x, y) Valeurs de type Single indiquant les coordonnées du centre du
cercle, de l'ellipse ou de l'arc. La propriété ScaleMode de l'objet
détermine les unités de mesure utilisées.
radius Valeur de type Single indiquant le rayon du cercle, de
l'ellipse ou de l'arc. La propriété ScaleMode de l'objet détermine les
unités de mesure utilisées.
color Facultatif. Valeur de type Long integer indiquant la couleur RGB
du cercle. Si cet élément est omis, la valeur de la propriété ForeColor est
utilisée. La fonction RGB ou QBColor permet également de spécifier la
couleur.
start, end Facultatif. Valeurs en précision simple. Lorsqu'un arc, une
partie de cercle ou une ellipse est tracée, les arguments start et end
spécifient (en radians) les points d'origine et de fin de l'arc. La plage de
ces deux valeurs s'étend de -2 à 2 pi radians. La valeur par défaut de start
est 0 radians ; celle de end est 2 pi radians.
aspect Facultatif. Valeur en précision simple qui indique le rapport
déterminant l'aspect du cercle. La valeur par défaut est 1,0, soit un cercle
parfait (non elliptique) sur tout écran.


Remarques

Pour remplir un cercle, définissez les propriétés FillColor et FillStyle de
l'objet sur lequel est dessiné le cercle ou l'ellipse. Seule peut être
remplie une figure fermée, à savoir cercle, ellipse ou secteur (arcs dont
les deux rayons aux extrémités sont dessinés).

Lors du tracé d'une partie de cercle ou d'une ellipse, si start est une
valeur négative, la méthode Circle dessine un rayon à la position start et
traite l'angle comme une valeur positive. Si end est une valeur négative, la
méthode Circle dessine un rayon à la position end et traite l'angle comme
une valeur positive. La méthode Circle dessine toujours dans le sens
contraire des aiguilles d'une montre (direction positive).

La largeur de trait du cercle, de l'ellipse ou de l'arc dépend de la valeur
de la propriété DrawWidth. La façon dont le cercle est dessiné sur le fond
est fonction de la valeur des propriétés DrawMode et DrawStyle.

Lors du tracé de secteurs, pour dessiner un rayon à angle 0 (segment de
ligne vers la droite), spécifiez une valeur négative infime pour start, au
lieu de 0.

Vous pouvez omettre un argument de la syntaxe mais pas la virgule de
celui-ci, avant de préciser l'argument suivant. S'il s'agit d'un argument
facultatif, vous pouvez aussi omettre la virgule le suivant.

Lors de l'exécution de la méthode Circle, les propriétés CurrentX et
CurrentY sont définies au centre spécifié par les arguments.

Cette méthode ne peut être utilisée dans un bloc With.End With.

Donc le dessin d'une part de tarte allant de l'angle debut à l'angle fin
doit être simplement

Circle (x,y),rayon,couleur_du_dessin,debut,fin

pour colorier l'intérieur il faut faire
For angleÞbut to fin step pi/100
line (x,y)-(x+rayon*cos(angle),y+rayon*sin(angle)),couleur_du_dessin
next angle

J'avoue ne pas comprendre pourquoi tu dessines d'abord en noir puis en
blanc.

Par contre je ne garantis pas que cela fonctionne en vb4

Salut

"Jean-Marc" a écrit dans le message de news:
44454c9a$0$29234$
lol, j'ai posté un peu vite!
Ca marche très bien entre -pi et pi, mais il faut rectifier
les angles pour circle entre pi et pi/2.

Je laisse au lecteur le soin de le faire :-)

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;



Avatar
Jean-marc
"Patrice Henrio" wrote in message
news:uSUo##
Bonsoir Jean-Marc



Hello,

es-tu bien persuadé que ton
do while(1)
loop

va faire progresser notre visiteur qui semble en être au ba-BA



Je ne sais pas? C'était juste pour faire une petite animation,
car il a dit "un rayon mobile".

Voici ce que dit la MSDN


<snip>

J'avoue ne pas comprendre pourquoi tu dessines d'abord en noir puis en
blanc.



Pour faire la pseudo animation.

Par contre je ne garantis pas que cela fonctionne en vb4



Sais pas non plus...

--
Jean-marc