Вот метод OnPaint элемента управления, который просто наследует от элемента управления и предоставляет свойство для получения / установки textrenderinghint:
Private _mode as TextRenderingHint = SystemDefault.
Public Property Mode as TextRenderingHint
Get & Set _mode
...
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
Dim g = e.Graphics
Dim savMode = g.Save
g.TextRenderingHint = Me._mode
g.DrawString(Me.Text, Me.Font, Brushes.Black, 0, 0)
g.Restore(savMode)
MyBase.OnPaint(e)
End Sub
Теперь, если вы поместите два из них в форму, оставьте первыйпо умолчанию и измените второй на AntiAlias, он отлично выглядит во время разработки, но когда вы запускаете приложение, режим рендеринга первого ярлыка изменился.Это как если бы метод DrawString изменил системную ошибку по умолчанию.
Вот некоторые наблюдения:
(1) Если я установил чистоту, установите для первого элемента управления режим ClearTypeGridFit, который по умолчанию такой же, как в моемслучай, это решает проблему.
(2) Если поместить третий элемент управления в форму и оставить в режиме по умолчанию, это устранит проблему.
(3) TextRenderer.DrawText не воспроизводит проблему.
(4) Если я унаследую элемент управления меткой и переопределю метод onpaint для установки режима рендеринга, проблема не будет воспроизведена, даже если я установлю UseCompatibleTextRendering - который заставляет метку рендерить с DrawString вместо DrawText.
Я нахожусь на XP с включенным cleartype и использую Visual Studio 2008 Express Edition.
ETA: я пробовал это в C #, и то же самое происходит