许多GUI控件指示不同的状态

时间:2012-05-30 11:48:20

标签: arrays performance user-interface controls

这个问题非常开放,可能这个问题的答案取决于系统,但平均而言说这是显示不同状态的大矩阵(比如128个元素)的最佳方式?

  • 为每个单元格创建一个控件,让GUI库处理所有事件和内容(在Windows 128 HWND:s中)
  • 使用较低级别的图形基元绘制整个矩阵

根据选择,内存/ CPU性能是否存在差异?我的应用程序中每个单元格的状态数为4,因此每个单元需要2位来表示它们的状态。每个单元格将由与状态相关的图像表示。

1 个答案:

答案 0 :(得分:3)

当然有区别。我将尝试说明这一点以及基于此的假设。

  1. 控件的成本=控件的内存+控件的事件处理程序+控件的引用+事件管道中的一个额外控件

  2. 每个细胞映射“紧密”控制的好处。概念上干净,简单的代码,最容易思考。

  3. 紧密映射的成本:将每个控制的成本乘以单元格数。

  4. 我即将建议的替代方案假设紧密映射与松散的“一环”映射之间的成本增量很重要。

    替代:只需在您提供的整个矩阵视图的边界内添加一个为事件注册的控件,有一段代码来确定指针位置和对应的单元格,然后根据用户交互仅更新该单元格。

    这样做的好处是,您只需要一个额外控制的边际成本,但处理整个矩阵的交互的好处。边际效益或这种控制远远高于单一严格控制。 Aldo,实施成本很小,因为它是一种常见的模式而且并不太难。

    祝你好运!