TextRenderer.DrawText Apply Padding - PullRequest
       12

TextRenderer.DrawText Apply Padding

0 голосов
/ 26 марта 2019

У меня есть пользовательский элемент управления, и я рисую текст элемента управления с помощью TextRenderer.DrawText, вот как выглядит событие OnPaint:

Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
    MyBase.OnPaint(e)

    If Me.Dismissable Then
        Using dismissBrush As Brush = New SolidBrush(styleConfiguration(Me.Style).Value)
            ' Custom drawing
        End Using
    End If

    TextRenderer.DrawText(e.Graphics, Me.Text, Me.Font, New Point(0, 0), Me.ForeColor, TextFormatFlags.Left Or TextFormatFlags.LeftAndRightPadding)
End Sub

Как вы можете сказать, я пытаюсь приспособитьсязаполнение, которое устанавливается через Control.Padding, но независимо от того, какие TextFormatFlags я установил, заполнение никогда не применяется, когда вызывается DrawText.

Поэтому я попытался установить только границы того, где текст должен быть нарисован, используя:

Dim textBounds As Rectangle = Me.Bounds
textBounds.Inflate(-(Me.Padding.Left + Me.Padding.Right), -(Me.Padding.Top + Me.Padding.Bottom))
textBounds.X += Me.Padding.Left
textBounds.Y += Me.Padding.Top

TextRenderer.DrawText(e.Graphics, Me.Text, Me.Font, textBounds, Me.ForeColor)

Но это полностью выталкивает текст из поля зрения элемента управления, даже если все поля установлены на 5.

...