WinForm TextBox中字体缩放的性能

时间:2012-12-21 10:03:02

标签: c# winforms performance font-size

我的winform 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 个答案:

答案 0 :(得分:2)

将猜测转换为答案:您已将WordWrap属性设置为True。自动换行通常是一项非常昂贵的操作,控件需要开始测量字符串以查看需要包装文本行的位置。当WordWrap为假时,它不需要做的事情。

制作字体越大,整个窗口的文字越少,因此需要进行的测量越多。这会减慢速度,当控件中有大量文本时,它会引起注意。简单的事情,比如找出从哪里开始绘画以及如何初始化垂直滚动条变得复杂。在记事本中也非常明显,使用Format + Word Wrap。打开它后,当你加载一个大的.txt文件时,程序会停止运行一段时间。