Hi,
I am trying to rotate a label through 90 degrees. At the moment I can take the text from the label and rotate that, but what I want to do is actually rotate a label of my choice, or if I were to be really flashy, lets say a button control. So using the code below, how can I modify it so that I can feed it a control and get it to rotate it?
protected override void OnPaint(PaintEventArgs e)
    {
        Graphics graphics = e.Graphics;
        string text = label4.Text;
        StringFormat stringFormat = new StringFormat();
        stringFormat.Alignment = StringAlignment.Center;
        stringFormat.Trimming = StringTrimming.None;
        Brush textBrush = new SolidBrush(this.ForeColor);
        //Getting the width and height of the text, which we are going to write
        float width = graphics.MeasureString(text, this.Font).Width;
        float height = graphics.MeasureString(text, this.Font).Height;
        //The radius is set to 0.9 of the width or height, b'cos not to 
        //hide and part of the text at any stage
        float radius = 0f;
        if (ClientRectangle.Width < ClientRectangle.Height)
        {
            radius = ClientRectangle.Width * 0.9f / 2;
        }
        else
        {
            radius = ClientRectangle.Height * 0.9f / 2;
        }
        int rotationAngle = 90;
        double angle = (rotationAngle / 180) * Math.PI;
        graphics.TranslateTransform(
            (ClientRectangle.Width + (float)(height * Math.Sin(angle)) - (float)(width * Math.Cos(angle))) / 2,
            (ClientRectangle.Height - (float)(height * Math.Cos(angle)) - (float)(width * Math.Sin(angle))) / 2);
        graphics.RotateTransform((float)rotationAngle);
        graphics.DrawString(text, this.Font, textBrush, 0, 0);
        graphics.ResetTransform();        
    }