Bonjour

Je cherche a trouver le bon algorithme et la bonne methode pour tracer du texte horizontal mais bien répartit autour d'un cercle

Exemple : le cadran d'une montre divisé en 12 portion ou un camembert

Je souhaite que le texte soit bien répartit au milieu de chaque quartier autour du cercle

J'ai bricolé la methode ci dessous mais qui a mon avis est améliorable

iValue est la valeur (numerique) a afficher
ptCentre et le centre du cercle
W_2 est le rayon
fAngle est l'angle absolu du debut de portion
fSweep et l'angle de la portion de cercle

Des idées ?
Merci de votre aide


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
   StringFormat drawFormat = new StringFormat();
    drawFormat.Alignment = StringAlignment.Center;
    drawFormat.LineAlignment = StringAlignment.Center;
    string s = iValue.ToString();
    SizeF szs = g.MeasureString(s, font);
    PointF ptx = GetPosition(ptCentre,szs,fAngle,fSweep,W_2);
    g.DrawString(s, font, Brushes.Black, ptx,drawFormat);
 
    private static PointF GetPosition(PointF ptCentre, SizeF szs, float fAngle, float fSweep, float rayon)
    {
      double x, y;
      double rad = ((fAngle+(fSweep/2)) * Math.PI) / 180.0f;
      rayon +=szs.Width/ 2;
      x = Math.Cos(rad) * rayon;
      y = Math.Sin(rad) * rayon;
 
      x+=ptCentre.X;
      y+= ptCentre.Y;
 
      PointF pt = new PointF((float)x,(float)y);
      return pt;
 
    }