如何将两个列表相互比较并使用C#相应地设置像素值?

时间:2014-03-07 23:00:19

标签: c# image list

我有两个列表,List1包含我的图像“bmp”中每个像素的坐标(x,y),还有List2,它包含0,1,2,3,4和5之间的整数值。 0表示最低有效位(0),5表示最高有效位(255)。 0到255是不同级别的灰色。

我的问题基本上是如何将List1与List2进行比较,并根据List2中的信息在我的图像“bmp”中设置像素值;

因此输出将是一个灰度图像,根据我的List2选择图像中每个像素的颜色。

2 个答案:

答案 0 :(得分:2)

您可以使用简单的循环和乘法来执行此操作:

for (int i = 0; i < list2.Count; i++)
{
    int c = list2[i] * 51;
    bmp.SetPixel(list1[i].X, list1[i].Y, Color.FromArgb(c,c,c));
}

这将根据list2中的值创建颜色,然后设置相应像素的颜色(假设list1的位置对应于list2的值) 。 如果这有帮助,请告诉我。

答案 1 :(得分:0)

在列表上尝试for循环,将其视为数组。

for (int i=0, i < list1.count-1, i++)
{
  switch (list2[i])
  {
    # Making a fake method here - I'm basically faking that the SetPixel method
    # takes in a coordinate and lets you set a value on that coordinate.
    case 1:
      bmp.Setpixel(list1[i]).value = 0;
      break;
    case 2:
      bmp.Setpixel(list1[i]) value = 51;
      break;
    etc...
  }
}