Почему в Plain TextBox отображаются несколько размеров шрифта? - программирование
Подтвердить что ты не робот

Почему в Plain TextBox отображаются несколько размеров шрифта?

Это не вопрос о том, как изменить размер шрифта. Скорее, почему размер моего шрифта изменяется сам по себе, когда я набираю (или вставляю), когда он находится внутри простого элемента управления TextBox, который, как вы знаете, поддерживает только один цвет, один шрифт и один размер шрифта при любом заданном время.

Мой код:

using(FontDialog d = new FontDialog())
{
   // The usual properties...
   if(d.ShowDialog() == DialogResult.OK)
   {
      textbox1.Font = d.Font;
   }
}

Шрифт установлен в 8pt. Если я вставляю в него простой текст, верхняя строка будет от 9 до 10pt, а нижняя строка заметно меньше (около 8 pt).

Не имеет значения, какой шрифт, стиль шрифта или размер шрифта я выбираю; это продолжается!

enter image description here

Update

Спасибо за вашу помощь до сих пор. Чтобы ответить на ваши последние вопросы ниже:

Мое приложение предназначено для .NET 4.5.

В коде нет никакого смешения, так как я смог воспроизвести эту проблему в новом проекте Windows Forms, но ничего, кроме формы, текстового поля и кнопки, вызывающей FontDialog.

Чтобы ответить на вопрос о моих видеодрайверах, мне потребовалась поддержка приложения, которое я купил несколько недель назад, и они сказали мне запустить DXDiag, они вернулись ко мне, заявив, что мой драйвер видеокарты устарел, однако я не думал, что это потому, что я всегда проверяю каждые несколько месяцев. Затем я пошел на сайт производителя, и он сказал, что у меня уже установлены последние версии драйверов для моей системы.

В Windows Update также сообщается, что новых доступных обновлений нет. Однако я проверю новую версию драйверов.


Я также выполнил тест в новом пустом проекте, в котором я отображаю шрифт, используемый TextBox, перед вызовом FontDialog.ShowDialog(), и после того, как он был показан и после того, как новый шрифт был установлен, и все соответствует - все же все еще есть проблемы после изменения размера шрифта/шрифта внутри текстового поля.

4b9b3361

Ответ 1

Я подозреваю, что экран High-DPI, который вы используете, не использует точное кратное 96 DPI. Когда в этой ситуации Windows отображает ваше приложение на виртуальный экран с разрешением 96 точек на дюйм, а затем пересказывает результат в новый DPI. Наличие DPI, который не является точным кратным 96, может привести к ошибкам округления при перемасштабировании отображения приложения и, как следствие, шрифты могут выглядеть неравномерными.

Попробуйте установить свой DPI на один из размеров в Приложение C Microsoft Написание высокоуровневых приложений Win32.