У меня есть пользовательский элемент управления, и я рисую текст элемента управления с помощью 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.