Здесь - это пример проекта, который выполняет вертикальный текст. Также есть некоторые комментарии по поводу выравнивания текста.
В этом примере вы можете использовать StringAlignment.Center для центрирования символов и передачи его последнему параметру вызова DrawString.
protected override void OnPaint(PaintEventArgs e)
{
float x = 10.0F;
float y = 10.0F;
Font drawFont = new Font("Arial", 16);
SolidBrush drawBrush = new SolidBrush(Color.Black);
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Center;
foreach (char c in Text.ToCharArray())
{
PointF p = new PointF(x, y);
e.Graphics.DrawString(c.ToString(), drawFont, drawBrush, p, sf);
y += drawFont.Height;
}
}