Пример использования Graphics.ScaleTransform () , используемого для добавления матрицы преобразования к следующим операциям Graphics.
Обратите внимание, что это преобразование применимо до тех пор, покаГрафика может рисовать шрифт в заданном размере.Если шрифт слишком маленький или слишком большой, рендеринг не будет работать должным образом.
Минимальный размер шрифта должен составлять 8.5 ~ 9
точек и не более 72
.
За пределами этого диапазона результат непредсказуем,(например, текст может просто исчезнуть).
Таким образом, минимальный / максимальный размер элемента управления должен быть установлен во время разработки и не масштабироваться сверх этих мер.
Свойство Label.TextAlign
установите здесь ContentAlignment.MiddleLeft
.
Также: .AutoSize = false;
.Text = "Some text that needs to fit";
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Text;
private void label1_Paint(object sender, PaintEventArgs e)
{
Label label = sender as Label;
e.Graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
float TextWidth = e.Graphics.MeasureString(label.Text, label.Font, label.Size, StringFormat.GenericTypographic).Width;
float scale = (label.ClientSize.Width - label.Padding.Left) / TextWidth;
e.Graphics.Clear(label.BackColor);
e.Graphics.ScaleTransform(scale, scale);
using (SolidBrush brush = new SolidBrush(label.ForeColor))
e.Graphics.DrawString(label.Text, label.Font, brush,
new RectangleF(PointF.Empty, label1.ClientSize),
StringFormat.GenericTypographic);
}
Визуальный результат: