C#错误的颜色预览图像

时间:2013-06-24 12:44:03

标签: c# listview colors preview

我是使用C#构建应用程序的新手。我正在处理图像并对它们进行一些分析。点击图像后,我得到当前像素的RGB值。接下来,所有值都存储在带有预览图像的列表视图中。而且有我的问题。预览图像与当前像素的RGB值不同。如果我用图片盒做同样的事情,那么颜色是正确的。但我不知道如何将图片框实现到listView或listBox。 有我的源代码,它为我的颜色预览创建位图。

private Image createImage(Color col)
    {
      PixelFormat px_format = PixelFormat.Format32bppRgb;

      int pixelFormatSize = Image.GetPixelFormatSize(px_format) / 8;
      int stride = 16 * pixelFormatSize;
      int padding = (stride % 4);
      stride += padding == 0 ? 0 : 4 - padding; //pad out to multiple of 4
      SharedPinnedByteArray byteArray = new SharedPinnedByteArray(stride * 16);
      Bitmap bmp = new Bitmap(16, 16, stride, px_format, byteArray.bitPtr);
      Graphics gpx = Graphics.FromImage(bmp);
      SolidBrush brush = new SolidBrush(col);
      gpx.FillRectangle(brush, 0, 0, 16, 16);
      gpx.Dispose();
      return bmp;
    }

以下是我如何调用函数和向listView添加项目

listView1.SmallImageList.Images.Add(createImage(color));
listView1.Items.Add(color.R.ToString() + "," + color.G.ToString() + "," + color.B.ToString() + ",", listView1.SmallImageList.Images.Count - 1);

祝你好运

加布里埃尔

1 个答案:

答案 0 :(得分:0)

由于默认列表视图颜色深度为8位,因此需要将其更改为24位或32位:

listView1.SmallImageList.ColorDepth = ColorDepth.Depth24Bit;