我在 .NET 中快速绘制某些东西时遇到问题。我不认为任何特别的事情应该花费太多时间,但是在我尝试过的每台机器上,我都会遇到严重的问题。这是在 vs2008 .NET 中使用 C# 实现的(在 C++ 中有一些东西,但与绘图无关)。
我有三个屏幕,用户应该能够毫无延迟地在它们之间切换。在第一个屏幕上,有四个按钮、八个用户控件(包括两个按钮和每个 6 个标签)、一个文本字段和一个下拉框。我不认为它有那么多。
在第二个屏幕上,我有四个标签、六个按钮和两个控件,每个控件有六个按钮、一个 opengl 绘图上下文和大约十个标签。
在第三个屏幕上,我有一个 opengl 上下文和 10 个按钮。
从任何屏幕翻转到任何屏幕实际上需要大约一秒钟。例如,如果我从第二个屏幕翻转到第一个屏幕,整个应用程序就会空白,显示背景屏幕,然后绘制第一个屏幕。很多时候,一块块地绘制屏幕,就好像这台机器在瑞典的一家工厂里故意手工制作精致美味的字母,然后将每个字母单独运送到我的屏幕上。我夸大了,我想把这一点说清楚,因为我不认为瑞典人像这次重画那么慢。
第一个和第二个屏幕被绘制在内存中,并存储在那里,只有一个“.Hide()”和“.Show()”来使它们出现和消失。双缓冲似乎无关紧要。第三个屏幕每次都重新绘制,并且绘制时间似乎与第一个和第二个相同。
有什么想法吗?会发生什么?我怎样才能找到它?
谢谢!
编辑:我应该补充一点,任何 C++ 处理等都发生在它自己的线程中。偶尔会有 MethodInvoke 将操作的结果绘制到屏幕上,但是这个问题在没有调用任何函数的情况下发生,只需按下按钮从一个屏幕转到下一个屏幕。