c# - .NET C# 绘图缓慢

标签 c# .net drawing performance

我在 .NET 中快速绘制某些东西时遇到问题。我不认为任何特别的事情应该花费太多时间,但在我试过的每台机器上,我都会遇到严重的问题。这是在 vs2008 .NET 中使用 C# 实现的(有一些 C++ 的东西,但与绘图无关)。

我有三个屏幕,用户应该能够在它们之间无延迟地切换。在第一个屏幕上,有四个按钮、八个用户控件(每个控件由两个按钮和 6 个标签组成)、一个文本字段和一个下拉框。我不认为它有那么多。

在第二个屏幕上,我有四个标签、六个按钮和两个具有六个按钮的控件、一个 opengl 绘图上下文和大约十个标签。

在第三个屏幕上,我有一个 opengl 上下文和 10 个按钮。

从任何屏幕翻转到任何屏幕大约需要一秒钟。例如,如果我从第二个屏幕翻转到第一个屏幕,整个应用程序就会空白,显示背景屏幕,然后绘制第一个屏幕。很多时候,屏幕是零碎绘制的,就好像机器在瑞典的一家工厂里故意手工制作精致可口的字母,然后将每个字母单独运送到我的屏幕上。我夸大了,我想说清楚,因为我不认为瑞典人像这次重绘一样慢。

第一个和第二个屏幕在内存中绘制,并存储在那里,只有一个'.Hide()' 和'.Show()' 使它们出现和消失。双缓冲似乎并不重要。第三个屏幕每次都重新绘制,并且看起来与第一个和第二个屏幕花费的时间相同。

有什么想法吗?可能发生了什么?我怎样才能追踪到它?

谢谢!

编辑:我应该补充一点,任何 C++ 处理等都发生在它自己的线程中。偶尔会有 MethodInvoke 将操作结果绘制到屏幕上,但是这个问题发生在没有调用任何函数的情况下,只需按下按钮从一个屏幕转到下一个屏幕。

最佳答案

除了提到的分析器之外,您还可以关闭 OpenGL 上下文。如果您注意到加速,那么您就会知道这是您的图形内容,并且您可以相应地集中精力进行优化。

瑞典式幽默加分。

关于c# - .NET C# 绘图缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/426488/

相关文章:

c# - 从多个位置创建脚本包

c# - 当我使用类类型作为参数时,为什么我的 Razor 页面中的模型状态无效?

c# - 有没有办法测试一个潜在的僵尸交易,看看它是否可以回滚?

c# - Task.ContinueWith 是否捕获调用线程上下文以继续?

iOS PDF 生成 : How Do I Draw an MkMapView in PDF?

javascript - 在列表之间绘制箭头

IOS:画一条线删除另一条线

c# - 使用mysql插入数据时出现语法错误

c# - 安装后 LARGEADDRESSAWARE 关闭了吗?

c# - 将 List<string> 转换为 StringCollection