2012-09-24 162 views
2

我使用的是自定义标签,使前景色当标签被禁用(通过使用下面)围绕自定义标签文本

如何居中文本为标准lablel时自动调整大小是不关闭,文本对齐是否设置为TopCenter?我已经尝试使用对齐选项的StringFormat,但是这不与中心对齐。

Protected Overrides Sub OnPaint(e As PaintEventArgs) 
     Dim LabelBrush As New SolidBrush(Me.ForeColor) 

     Dim SF As New StringFormat 

     SF.FormatFlags = StringFormatFlags.NoWrap 
     SF.Alignment = StringAlignment.Center 
     SF.LineAlignment = StringAlignment.Center 

     LabelBrush.Color = DisabledColor_Dark 

     e.Graphics.DrawString(Me.Text, Me.Font, LabelBrush, Padding.Left, Padding.Right, SF) 

     LabelBrush.Dispose() 
     LabelBrush = Nothing 
    End Sub 

回答

1

DrawString调用与这些填充变量看起来不正确。

试试这个:

e.Graphics.DrawString(Me.Text, Me.Font, LabelBrush, Me.ClientRectangle, SF) 

至于匹配TopCenter的的ContentAlignment,等等,你就必须相应地改变你的对齐和LineAlignment属性要如何显示的文本。

此外,请考虑使用TextRenderer而不是e.Graphics.DrawString()。更好的产出。

TextRenderer.DrawText(e.Graphics, Me.Text, Me.Font, Me.ClientRectangle, _ 
         DisabledColor_Dark, Color.Empty, _ 
         TextFormatFlags.HorizontalCenter Or _ 
         TextFormatFlags.VerticalCenter)