Производительность масштабирования шрифтов в WinForm TextBox

Моя винформ Form имеет TextBox элемент управления, для которого я реализовал масштабирование Ctrl + MouseWheel, и это работает как шарм.

Однако я заметил, что от определенного размера шрифта и выше масштабирование шрифта занимает все больше времени для завершения / рендеринга.

Может кто-нибудь сказать мне, почему это происходит и есть ли способ избежать этого (кроме ограничения максимального коэффициента масштабирования)?

Я сомневаюсь, что это уместно, но я включу свой код в случае, если я вызываю это.

void xmlForm_MouseWheel(object sender, MouseEventArgs e)
{
    if (Control.ModifierKeys == Keys.Control)
    {
        if (((Form)sender).Controls[0].Font.Size + (e.Delta / 120) > 1 && ((Form)sender).Controls[0].Font.Size + (e.Delta / 120) < Single.MaxValue)
        {
            Font newFont = new Font(((Form)sender).Controls[0].Font.FontFamily, ((Form)sender).Controls[0].Font.Size + (e.Delta / 120));
            ((Form)sender).Controls[0].Font = newFont;
        }
    }
}

Заранее спасибо.

1 ответ

Решение

Превращая предположение в ответ: для свойства WordWrap установлено значение True. Обтекание слов, в общем, довольно дорогая операция, элемент управления должен начинать измерять строки, чтобы увидеть, куда нужно переносить строку текста. Что-то, что не нужно делать, когда WordWrap ложно.

Чем больше вы делаете шрифт, тем меньше текста помещается по всему окну, тем больше измерений нужно выполнить. Это замедляет работу, это становится заметным для глаз, когда в элементе управления много текста. Простые вещи, такие как выяснение, с чего начать рисовать и как инициализировать вертикальную полосу прокрутки, становятся сложными. Также очень хорошо видно в блокноте, используя формат + перенос слов. Когда этот параметр включен, программа на время отключается, когда вы загружаете большой текстовый файл.

Другие вопросы по тегам