繁体   English   中英

为什么要从位图的Width和Height属性中减去1?

[英]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?

由返回的值WidthHeight属性是互斥的 ,这意味着与坐标(宽度,高度)中的像素立即位于所述位图的边界之外

因此,如果要遍历像素,则需要减去一以获得正确的行数或列数。

当然,很难说更多。 您显示的代码部分不再使用这些值。

不。我们永远不会知道从位图宽度减去1的目的是什么,因为我们不知道bitmap的上下文。

这样做的原因是使数组索引与位图的行和高度值匹配。 考虑:

您有一个2x2像素的位图。 它总共有4个像素,宽度和高度均为2。 如果要对其进行迭代,则需要在两个方向(宽度和高度)上从0到1(包括两端)进行迭代,但是如果按位图像素进行迭代,则将在1和2之间进行迭代,这将导致索引从界限。

就我个人而言,我不会从width和height 变量中减去1,而只是在迭代像素数组以防止混淆时减去。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM