1

我正在使用位图中的 GetPixel(使用 LockBits,因此没有效率问题),并且需要尽快在颜色数组中搜索颜色在数组中的位置。我有非常大的位图要遍历。

...                
prevColor = Color.FromArgb(255, r, g, b);

int count = 1536;
for (int i = 0; i < count; i++)
{
   if (prevColor == theColorScale[i])
   {
       loc = i;
       break;
   }
}

有什么建议么?

4

2 回答 2

1

接受所述问题

字典有 O(1) 查找

Dictionary<color, Int32> colors = new Dictionary<color, Int32>();
...
loc = colors[prevColor];

字典中的键(颜色)必须是唯一的

于 2013-09-19T14:48:22.880 回答
0

您可以使用列表并使用 .IndexOf() 进行搜索吗?

...
List<Color> colorScale;
/* add colors */
loc = colorScale.IndexOf(prevColor);
于 2013-09-19T14:29:53.333 回答