winforms 图形.绘制 *,自动滚动和剔除

k5hmc34c  于 8个月前  发布在  其他
关注(0)|答案(2)|浏览(53)

我在C#/Winforms中实现了一个自定义控件,它可以完成语法高亮和自动完成等功能。我使用自动滚动来管理滚动,它工作得很好。
目前我还没有优化在所有(当然优化是重要的,但我做的最后;功能是我首先追求的),我正在渲染巨大的文档,每个按键都会重新解析受影响的行,以确保语法突出显示是一致的。
现在在我的大肉画方法,我画每一个字符串,关键字等,即使它是在剪辑区域之外。但是不管文档有多大,以及我有多少关键字/突出显示的位和位的组合,它仍然运行得非常快,没有太多的内存和CPU开销。
所以我的问题是-Graphics.Draw* 方法做任何类型的剔除吗?例如:如果AutoScrollPosition位于文档下方& I Graphics.DrawString(* 在绘图区域外插入一些坐标 *),是否正在执行任何实际工作?还请注意,我在Win7上的VM中运行VS,它仍然运行得很快。这并不是现在的问题,但在以后的优化阶段,最好记住这一点。:D个
干杯,亚伦

idfiyjo8

idfiyjo81#

根据编写使用Graphics.Draw* 方法的游戏的个人经验,如果在调用绘图方法之前执行自己的边界检查,您会注意到速度会有所提高。
尝试在屏幕外画东西比在屏幕外画东西快,但仍然明显比根本不画东西慢。

l3zydbqr

l3zydbqr2#

我想建议使用WPF代替Winform,更好的性能等等。

相关问题