我在 .NET 中快速绘制某些东西时遇到问题。我不认为任何特别的事情应该花费太多时间,但在我试过的每台机器上,我都会遇到严重的问题。这是在 vs2008 .NET 中使用 C# 实现的(有一些 C++ 的东西,但与绘图无关)。
我有三个屏幕,用户应该能够在它们之间无延迟地切换。在第一个屏幕上,有四个按钮、八个用户控件(每个控件由两个按钮和 6 个标签组成)、一个文本字段和一个下拉框。我不认为它有那么多。
在第二个屏幕上,我有四个标签、六个按钮和两个具有六个按钮的控件、一个 opengl 绘图上下文和大约十个标签。
在第三个屏幕上,我有一个 opengl 上下文和 10 个按钮。
从任何屏幕翻转到任何屏幕大约需要一秒钟。例如,如果我从第二个屏幕翻转到第一个屏幕,整个应用程序就会空白,显示背景屏幕,然后绘制第一个屏幕。很多时候,屏幕是零碎绘制的,就好像机器在瑞典的一家工厂里故意手工制作精致可口的字母,然后将每个字母单独运送到我的屏幕上。我夸大了,我想说清楚,因为我不认为瑞典人像这次重绘一样慢。
第一个和第二个屏幕在内存中绘制,并存储在那里,只有一个'.Hide()' 和'.Show()' 使它们出现和消失。双缓冲似乎并不重要。第三个屏幕每次都重新绘制,并且看起来与第一个和第二个屏幕花费的时间相同。
有什么想法吗?可能发生了什么?我怎样才能追踪到它?
谢谢!
编辑:我应该补充一点,任何 C++ 处理等都发生在它自己的线程中。偶尔会有 MethodInvoke 将操作结果绘制到屏幕上,但是这个问题发生在没有调用任何函数的情况下,只需按下按钮从一个屏幕转到下一个屏幕。
最佳答案
除了提到的分析器之外,您还可以关闭 OpenGL 上下文。如果您注意到加速,那么您就会知道这是您的图形内容,并且您可以相应地集中精力进行优化。
瑞典式幽默加分。
关于c# - .NET C# 绘图缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/426488/