日期:2014-05-20  浏览次数:21037 次

一个关于Bitmap参数的问题?
看到一个关于如何通过位图句柄来显示图像到image控件中显示 的问题,地址如下:
http://topic.csdn.net/u/20081114/14/f58db634-470b-4126-8efb-2fc13b823337.html?1419600130

我的问题是:

Bitmap bmp = new Bitmap(bmpWidth, bmpHeight, bmpStride, PixelFormat.Format24bppRgb, bmpHandle);
中bmpStride 这个参数的含义是什么?有什么作用?

------解决方案--------------------
Stride: 获取或设置 Bitmap 对象的跨距宽度(也称为扫描宽度)。

Stride:跨距是单行像素(一个扫描行)的宽度,舍入为一个 4 字节的边界。跨距总是大于或等于实际像素宽度。如果跨距为正,则位图自顶向下。如果跨距为负,则位图颠倒。Stride是指图像每一行需要占用的字节数。根据BMP格式的标准,Stride一定要是4的倍数。据个例子,一幅1024*768的24bppRgb的图像,每行有效的像素信息应该是1024*3 = 3072。因为已经是4的倍数,所以Stride就是3072。那么如果这幅图像是35*30,那么一行的有效像素信息是105,但是105不是4的倍数,所以填充空字节,Stride应该是108。这一行计算出来的offset就是3。一要注意必须是4的倍数,二单位是字节!