搜索数组以便在.NET中匹配颜色的最快方法

时间:2013-09-19 14:17:08

标签: c# .net bitmap

我正在使用位图中的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;
   }
}

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

接受陈述的问题

字典有O(1)查找

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

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

答案 1 :(得分:0)

您可以使用List并使用.IndexOf()?

进行搜索
...
List<Color> colorScale;
/* add colors */
loc = colorScale.IndexOf(prevColor);