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

问题描述

| 我有以下代码:
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,bitmap.Width,bitmap.Height),ImageLockMode.ReadOnly,PixelFormat.Format32bppArgb);
有人知道ѭ1是什么意思吗?还有the2ѭ吗?为什么要从每个属性值中减去1?     

解决方法

Width
Height
属性返回的值是互斥的,这意味着坐标(宽度,高度)的像素紧邻位图的边界。 因此,如果要遍历像素,则需要减去一以获得正确的行数或列数。 当然,很难讲得多。您所显示的代码部分不再使用这些值。     ,不。我们永远不会知道从位图宽度减去1的目的是什么,因为我们不知道
bitmap
的上下文。     ,这样做的原因是使数组索引与位图的行和高度值匹配。考虑: 您有一个2x2像素的位图。它总共有4个像素,宽度和高度均为2。如果要对其进行迭代,则需要在两个方向(宽度和高度)上从0迭代到1(包括0和1),但是如果按位图像素进行迭代,则将在1和2之间进行迭代,这将导致索引从界限。 就我个人而言,我不会从width和height变量中减去1,而只是在遍历像素数组以防止混淆时减去。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...