C# 为什么位图操作代码会从步幅中减去宽度?

C# 为什么位图操作代码会从步幅中减去宽度?,c#,.net,bitmap,C#,.net,Bitmap,行imagePointer1+=bitmapData1.Stride-(bitmapData1.Width*4)的作用是什么以下代码中的平均值 var width = bitmap.Width; var height = bitmap.Width; var horizontalProjection = new double[width]; var verticalProjection = new double[height]; var bitmapData1 = bitmap.LockBit

imagePointer1+=bitmapData1.Stride-(bitmapData1.Width*4)的作用是什么以下代码中的平均值

var width = bitmap.Width;
var height = bitmap.Width;

var horizontalProjection = new double[width];
var verticalProjection = new double[height];

var bitmapData1 = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);

        unsafe
        {
            var imagePointer1 = (byte*)bitmapData1.Scan0;

            for (var y = 0; y < height; y++)
            {
                for (var x = 0; x < width; x++)
                {
                    var blu = imagePointer1[0];
                    var green = imagePointer1[1];
                    var red = imagePointer1[2];

                    int luminosity = (byte)(((0.2126 * red) + (0.7152 * green)) + (0.0722 * blu));

                    horizontalProjection[x] += luminosity;
                    verticalProjection[y] += luminosity;

                    imagePointer1 += 4;
                } 

               imagePointer1 += bitmapData1.Stride - (bitmapData1.Width * 4);
            }
        }

        MaximizeScale(ref horizontalProjection, height);
        MaximizeScale(ref verticalProjection, width);

        var projections = 
            new[]
                {
                    horizontalProjection, 
                    verticalProjection
                };

        bitmap.UnlockBits(bitmapData1);
        return projections;
var-width=bitmap.width;
var高度=位图宽度;
var水平投影=新的双[宽度];
var垂直投影=新的双[高度];
var bitmapData1=bitmap.LockBits(新矩形(0,0,bitmap.Width,bitmap.Height),ImageLockMode.ReadOnly,PixelFormat.Format32bppArgb);
不安全的
{
var imagePointer1=(字节*)bitmapData1.Scan0;
对于(变量y=0;y
代码只是增加变量
imagePointer1
中包含的指针

必须按步长(宽度*4)递增的原因是位图在内存中的表示方式


其中有一个非常全面的解释。

代码只是增加变量
imagePointer1
中包含的指针

必须按步长(宽度*4)递增的原因是位图在内存中的表示方式

有一个非常全面的解释可以作为一部分