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

use*_*329 6 arrays performance user-interface controls

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

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

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

Cri*_*low 3

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

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

  2. 每个单元映射的“严格”控制的好处。概念清晰、代码简单、最容易思考。

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

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

替代方案:只需添加一个仅在您呈现的整个矩阵视图范围内注册事件的控件,有一段代码来确定指针位置和对应的单元格,然后根据用户仅更新该单元格那里互动。

这样做的优点是您只需一个额外的控制即可获得边际成本,但可以获得处理整个矩阵交互的好处。这种控制的边际效益比单一严格控制高得多。Aldo,实施成本很小,因为它是常见模式并且不太困难。

祝你好运!