0

我在 C#/Winforms 中实现了一个自定义控件,它执行语法高亮和自动完成等操作。我正在使用 AutoScroll 来管理滚动,并且效果很好。

目前我根本没有优化(当然优化很重要,但我是最后做的;功能是我首先追求的),我正在渲染巨大的文档,每个按键都会重新解析受影响的行以确保语法高亮是一致的。

现在,在我的大肉绘制方法中,我正在绘制每个字符串、关键字等,即使它在剪辑区域之外。但是,无论文档有多大以及我有多少关键字/突出显示的位和片段的组合,它仍然运行得非常快,内存和 CPU 开销并不多。

所以我的问题 - Graphics.Draw* 方法是否进行任何类型的剔除?例如:如果 AutoScrollPosition 位于文档下方并且我 Graphics.DrawString(在绘图区域外插入一些坐标),是否有任何实际工作正在完成?另请注意,我在 VM 内的 Win 7 上运行 VS,它仍然运行得很快。并不是说它现在是一个问题,但是在以后的优化阶段请记住这一点会很好。:D

干杯,亚伦

4

1 回答 1

1

从编写使用 Graphics.Draw* 方法的游戏的个人经验来看,如果在调用绘图方法之前执行自己的边界检查,您会发现速度有所提高。

尝试在屏幕外绘制东西比在屏幕上绘制东西要快,但它仍然比根本不绘制它们要慢得多。

于 2011-12-14T23:53:33.670 回答