2012-09-24 91 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)