聲明:該處理方法是從.net源碼中學到的。
//水平方向的對齊方式
private StringAlignment TranslateAlignment(ContentAlignment align)
{
ContentAlignment anyRight = ContentAlignment.TopRight | ContentAlignment.MiddleRight | ContentAlignment.BottomRight;
ContentAlignment anyCenter = ContentAlignment.TopCenter | ContentAlignment.MiddleCenter | ContentAlignment.BottomCenter;
if ((align & anyRight) != 0)
{
return StringAlignment.Far;
}
else if ((align & anyCenter) != 0)
{
return StringAlignment.Center;
}
else
{
return StringAlignment.Near;
}
}
//垂直方向的對齊方式
private StringAlignment TranslateLineAlignment(ContentAlignment align)
{
ContentAlignment anyBottom = ContentAlignment.BottomRight | ContentAlignment.BottomLeft | ContentAlignment.BottomCenter;
ContentAlignment anyMiddle = ContentAlignment.MiddleLeft | ContentAlignment.MiddleRight | ContentAlignment.MiddleCenter;
if ((align & anyBottom) != 0)
{
return StringAlignment.Far;
}
else if ((align & anyMiddle) != 0)
{
return StringAlignment.Center;
}
else
{
return StringAlignment.Near;
}
}
//上面的方法使用方式
StringFormat sf = new StringFormat();
sf.Alignment = TranslateAlignment(this.TextAlign);
sf.LineAlignment = TranslateLineAlignment(this.TextAlign);
e.Graphics.DrawString(text, this.Font, new SolidBrush(this.ForeColor), face, sf);