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