2

カスタムラベルを使用して、ラベルが無効になっているときにフォアカラーを有効にしています(以下を使用)

自動サイズ設定がオフで、テキストの配置が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
4

1 に答える 1

1

DrawString呼び出しは、これらのパディング変数では正しく表示されません。

代わりにこれを試してください:

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

TopCenterなどのContentAlignmentと一致する限り、テキストの表示方法に応じてAlignmentプロパティとLineAlignmentプロパティを変更する必要があります。

また、TextRendererの代わりに使用することを検討してe.Graphics.DrawString()ください。より良い出力。

TextRenderer.DrawText(e.Graphics, Me.Text, Me.Font, Me.ClientRectangle, _
                      DisabledColor_Dark, Color.Empty, _
                      TextFormatFlags.HorizontalCenter Or _
                      TextFormatFlags.VerticalCenter)
于 2012-09-24T13:08:23.630 に答える