Draw string along a circle : Draw String : Drawing 2D C# Examples


C# Examples » Drawing 2D » Draw String »

 

Draw string along a circle








    
using  System;
using  System.Drawing;
using  System.Collections;
using  System.ComponentModel;
using  System.Windows.Forms;
using  System.Data;

public  class  DrawStringAlignACircle  :  System.Windows.Forms.Form
{
    private  System.ComponentModel.Container  components  =  null;

    public  DrawStringAlignACircle()
    {
        InitializeComponent();
        BackColor  =  SystemColors.Window;
        ForeColor  =  SystemColors.WindowText;
    }

    protected  override  void  OnPaint  (  PaintEventArgs  e  )
    {
        Graphics  g  =  e.Graphics;
        SetScale(g);
        DrawFace(g);
        base.OnPaint(e);
    }
    private  void  InitializeComponent()
    {
        this.AutoScaleBaseSize  =  new  System.Drawing.Size(5,  13);
        this.ClientSize  =  new  System.Drawing.Size(292,  266);

    }

    [STAThread]
    static  void  Main()  
    {
        Application.Run(new  DrawStringAlignACircle());
    }

    private  void  SetScale(Graphics  g)
    {
        g.TranslateTransform(Width/2,  Height/2);

        float  inches  =  Math.Min(Width  /  g.DpiX,  Height  /  g.DpiX);

        g.ScaleTransform(inches  *  g.DpiX  /  2000,  inches  *  g.DpiY  /  2000);
    }

    private  void  DrawFace(Graphics  g)
    {
        Brush  brush  =  new  SolidBrush(ForeColor);
        Font  font  =  new  Font("Arial",  40);
    
        float  x,  y;

        const  int  numHours  =  12;
        const  int  deg  =  360  /  numHours;
        const  int  FaceRadius  =  450;
        
        for  (int  i  =  1;  i  <=  numHours;  i++)
        {
            x  =  GetCos(i*deg  +  90)  *  FaceRadius;
            y  =  GetSin(i*deg  +  90)  *  FaceRadius;

            StringFormat  format  =  new  StringFormat();
            format.Alignment  =  StringAlignment.Center;
            format.LineAlignment  =  StringAlignment.Center;

            g.DrawString(  i.ToString(),  font,  brush,  -x,  -y,format);
        
        }
        brush.Dispose();
        font.Dispose();
    }    

    private  static  float  GetSin(float  degAngle)
    {
        return  (float)  Math.Sin(Math.PI  *  degAngle  /  180f);
    }

    private  static  float  GetCos(float  degAngle)
    {
        return  (float)  Math.Cos(Math.PI  *  degAngle  /  180f);
    }

}
    
   
  
   




HTML code for linking to this page:

Follow Navioo On Twitter

C# Examples

 Navioo Drawing 2D
» Draw String