【问题标题】:Performance of font scaling in WinForm TextBoxWinForm TextBox 中字体缩放的性能
【发布时间】:2012-12-08 21:46:02
【问题描述】:

我的 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;
        }
    }
}

提前致谢。

【问题讨论】:

  • 非常模糊。试一试:我猜你已经将 WordWrap 属性设置为 True。这是一项昂贵的操作,而且需要包装的时间越长。
  • 您先生,您猜对了。你有我的谢意。对于这个含糊的问题,我深表歉意。

标签: c# winforms performance font-size


【解决方案1】:

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

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

【讨论】:

  • 再次感谢您澄清这一点。
猜你喜欢
  • 2020-05-18
  • 2010-12-14
  • 1970-01-01
  • 2015-05-19
  • 1970-01-01
  • 2014-07-24
  • 2018-03-11
  • 2012-02-08
  • 1970-01-01
相关资源
最近更新 更多