[英]Why would you subtract 1 from the Width and Height properties of a Bitmap?
我有以下代码:
public static double[][] GetRgbProjections(Bitmap bitmap)
{
var width = bitmap.Width - 1;
var height = bitmap.Height - 1;
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);
有人知道bitmap.Width - 1
是做什么用的吗? 也是bitmap.Height - 1;
? 为什么要从每个属性值中减去1?
由返回的值Width
和Height
属性是互斥的 ,这意味着与坐标(宽度,高度)中的像素立即位于所述位图的边界之外 。
因此,如果要遍历像素,则需要减去一以获得正确的行数或列数。
当然,很难说更多。 您显示的代码部分不再使用这些值。
不。我们永远不会知道从位图宽度减去1的目的是什么,因为我们不知道bitmap
的上下文。
这样做的原因是使数组索引与位图的行和高度值匹配。 考虑:
您有一个2x2像素的位图。 它总共有4个像素,宽度和高度均为2。 如果要对其进行迭代,则需要在两个方向(宽度和高度)上从0到1(包括两端)进行迭代,但是如果按位图像素进行迭代,则将在1和2之间进行迭代,这将导致索引从界限。
就我个人而言,我不会从width和height 变量中减去1,而只是在迭代像素数组以防止混淆时减去。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.