您可以使用 BitmapData bitmapDataIn = bitmap.LockBits(... ) 然后使用 use byte* pDataIn = (byte*)bitmapDataIn.Scan0; 获取指向原始位图数据的指针。
虽然这是 32 位位图数据
pDataIn[y * iStrideSize + x * 4 + 0] //Blue
pDataIn[y * iStrideSize + x * 4 + 1] //Greed
pDataIn[y * iStrideSize + x * 4 + 2] //Red
pDataIn[y * iStrideSize + x * 4 + 3] //Alpha
您可以使用指针修改或读取像素值
这是我的代码的复制粘贴,
unsafe
{
byte* pDataIn = (byte*)bitmapDataIn.Scan0;
int iStrideSize = bitmapDataIn.Stride; //one row size in bytes, iWidth * 4
int y, x;
byte B, G, R, A;
for (y = 0; y < iHeight; y++)
{
for (x = 0; x < iWidth; x++)
{
B = pDataIn[y * iStrideSize + x * 4 + 0];
G = pDataIn[y * iStrideSize + x * 4 + 1];
R = pDataIn[y * iStrideSize + x * 4 + 2];
A = pDataIn[y * iStrideSize + x * 4 + 3];
}
}
bitmap.UnlockBits(bitmapDataIn);
}