1

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);

よろしくお願いします

ガブリエル

4

1 に答える 1

0

デフォルトのリスト ビューの色深度は 8 ビットであるため、24 ビットまたは 32 ビットに変更する必要があります。

listView1.SmallImageList.ColorDepth = ColorDepth.Depth24Bit;
于 2014-08-13T14:12:31.770 に答える