1

ロックビットで問題が発生しました。黒いピクセルを検索していますが、正しくないように見えるため、WindowPopup を使用してすべてのピクセルの色を印刷していますが、プログラムが別の画像を使用しているようです。

代替テキスト http://i208.photobucket.com/albums/bb91/Savaronna/pixel-1.jpg?t=1234874238

最初に見つかった黒いピクセルを赤でマークしました。ご覧のとおり、他にも一致するはずのピクセルがいくつかあります。私は何を間違っていますか?

これは私の脚本ですが、私は何か監督していますか?

Bitmap b = this.TableListBMP;
BitmapData bmpData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height),
                                ImageLockMode.ReadWrite, 
                                PixelFormat.Format32bppPArgb);

int stride = bmpData.Stride;
IntPtr Scan0 = bmpData.Scan0;

unsafe
{
  byte * p = (byte *)(void *)Scan0;  
  int nOffset = bmpData.Stride - b.Width*4;    
  int xOffset, yOffset;

  for(int y=5; y<b.Height; ++y)
  {
    for(int x=1; x<b.Width; ++x)
    {
      MessageBox.Show(
        string.Format("x={0}, y={1}, ARGB={2},{3},{4},{5}",
          x, y,
          Convert.ToString(p[(y*stride)+(x*4)]),
          Convert.ToString(p[(y*stride)+(x*4)+1]),
          Convert.ToString(p[(y*stride)+(x*4)+2]),
          Convert.ToString(p[(y*stride)+(x*4)+3])));
      p +=4;
    }
    // EDIT: This line should be removed
    p += nOffset;
  }
}
b.UnlockBits(bmpData);
4

1 に答える 1