1

我的 winformForm有一个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;
        }
    }
}

预先感谢。

4

1 回答 1

2

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

字体越大,窗口中的文本越少,因此需要进行的测量越多。这会减慢它的速度,当控件中有很多文本时,它会变得很明显。弄清楚从哪里开始绘画以及如何初始化垂直滚动条等简单的事情变得复杂。在记事本中也非常明显,使用 Format + Word Wrap。启用该功能后,当您加载一个大的 .txt 文件时,该程序会停止运行一段时间。

于 2012-12-21T14:02:17.490 回答