Is it possible to display a label vertically in a Windows Forms?
Labels are easy, all you have to do is override the Paint
event and draw the text vertically. Do note that GDI is optimised for Drawing text horizontally. If you rotate text (even if you rotate through multiples of 90 degrees) it will looks notably worse.
Perhaps the best thing to do is draw your text (or get a label to draw itself) onto a bitmap, then display the bitmap rotated.
Some C# code for drawing a Custom Control with vertical text. Note that ClearType text NEVER works if the text is not horizontal:
using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; public partial class VerticalLabel : UserControl { public VerticalLabel() { InitializeComponent(); } private void VerticalLabel_SizeChanged(object sender, EventArgs e) { GenerateTexture(); } private void GenerateTexture() { StringFormat format = new StringFormat(); format.Alignment = StringAlignment.Center; format.LineAlignment = StringAlignment.Center; format.Trimming = StringTrimming.EllipsisCharacter; Bitmap img = new Bitmap(this.Height, this.Width); Graphics G = Graphics.FromImage(img); G.Clear(this.BackColor); SolidBrush brush_text = new SolidBrush(this.ForeColor); G.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit; G.DrawString(this.Name, this.Font, brush_text, new Rectangle(0, 0, img.Width, img.Height), format); brush_text.Dispose(); img.RotateFlip(RotateFlipType.Rotate270FlipNone); this.BackgroundImage = img; } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With