Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何比较两个列表并使用C#相应地设置像素值?_C#_Image_List - Fatal编程技术网

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

如何比较两个列表并使用C#相应地设置像素值?,c#,image,list,C#,Image,List,我有两个列表,List1包含图像“bmp”中每个像素的坐标(x,y),List2包含0,1,2,3,4和5之间的整数值。其中0表示最低有效位(0),5表示最高有效位(255)。0到255是不同级别的灰色 我的问题基本上是如何比较List1和List2,并根据List2中的信息设置图像“bmp”中的像素值 因此,输出将是灰度图像,图像中每个像素的颜色根据我的列表2进行选择。尝试在列表上进行for循环,将其视为数组 for (int i=0, i < list1.count-1, i++) {

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

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


因此,输出将是灰度图像,图像中每个像素的颜色根据我的列表2进行选择。

尝试在列表上进行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...
  }
}
for(int i=0,i
您可以使用一个简单的循环和乘法来实现:

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));
}
for(int i=0;i
这将基于
list2
中的值创建颜色,然后设置相应像素的颜色(假设
list1
的位置对应于
list2
的值)。
让我知道这是否有帮助。

如何将例如51指定给颜色阴影?这完全取决于您构建位图的方式。我相信@davidsbro的答案在这方面更完整。你能再给我解释一下吗,为什么你要把[I]乘以51?还有doeas(c,c,c)是什么意思?谢谢;)<代码>int c=list2[i]*51
获取列表2中索引
i
处的值,并将其乘以51,得到所需的值(0=0、1=51、2=102等)。这基本上是一个快捷方式,因此您不必编写
if(list2[i]==0)…else if(list2[i]==1).
颜色。FromArgb(c,c,c)从整数
c
创建一种颜色,该整数是list2中标准化为颜色的值。如果还有什么不清楚的地方,请告诉我。谢谢你的评论,因为我只制作灰度图像,我还需要使用RGB值吗?只要RGB值相等,图像将是灰色的。但是,您必须使用RGB值,因为这是位图的基本构建块。对于我发布的代码,只要有
颜色,图像将始终为灰色。FromArgb(c,c,c)
(因为R,G和B参数相等)。如果您还需要什么,或者这是否有帮助,请告诉我。:)它只是给了我一个错误:错误1'System.Collections.Generic.IEnumerable'不包含'Length'的定义,并且找不到接受'System.Collections.Generic.IEnumerable'类型的第一个参数的扩展方法'Length'(是否缺少using指令或程序集引用?)。错误2无法使用[]应用索引指向“System.Collections.Generic.IEnumerable”类型的表达式