简体   繁体   中英

Alignment in custom winforms label control

I used this answer: Alpha in ForeColor to create a custom label element that allowed fading through ARGB unlike the default label.

using System;
using System.Drawing;
using System.Windows.Forms;

public class MyLabel : Label {
  protected override void OnPaint(PaintEventArgs e) {
    Rectangle rc = this.ClientRectangle;
    StringFormat fmt = new StringFormat(StringFormat.GenericTypographic);
    using (var br = new SolidBrush(this.ForeColor)) {
      e.Graphics.DrawString(this.Text, this.Font, br, rc, fmt);
    }
  }
}

I was curious how I would implement TextAlign into this class allowing the text contents to be aligned correctly.

Thanks to @Aybe's comment, I worked out I needed to add the Alignment to the StringFormat var fmt like this:

fmt.Alignment = StringAlignment.Center;

Making the entire class look like this:

using System;
using System.Drawing;
using System.Windows.Forms;

public class MyLabel : Label {
  protected override void OnPaint(PaintEventArgs e) {
    Rectangle rc = this.ClientRectangle;
    StringFormat fmt = new StringFormat(StringFormat.GenericTypographic);
    fmt.Alignment = StringAlignment.Center;
        using (var br = new SolidBrush(this.ForeColor))
        {
            e.Graphics.DrawString(this.Text, this.Font, br, rc, fmt);
        }
    }   
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM