这是关于C ++和mfc的问题。 例如,left = 3,right = 8.是不是意味着从左到右有6个像素?为什么宽度=右 - 左?如果我知道一个代表图像rect的矩形,当我为图像数据分配内存时,我应该使用哪一个?宽度=左右,或宽度=右 - 左+ 1?我是图像处理的初学者。这真让我困惑。谢谢你的帮助!
答案 0 :(得分:5)
如果我们谈论CRect和RECT,documentation是明确的。
按照惯例,矩形的右边和底边通常被认为是独占的。换句话说,坐标为(右,下)的像素位于矩形的正外方。例如,当RECT传递给FillRect函数时,矩形将填充(但不包括)右列和底行像素。该结构与RECTL结构相同。
此处使用“包含下限,独占上限”的原则。所以元素的数量总是边界之间的差异。
答案 1 :(得分:0)
考虑这一点的另一种方法是,矩形的宽度是从左到右的距离度量。当left等于right(例如:left = 1和right = 1)时,它们之间的距离为零(请注意,距离可以为负)。
在使用RECT
表示像素坐标时,我们通常想知道从左到右的像素的 count 。当left等于right(例如:left = 1 and right = 1)时,我们知道在左右方向上只有一个像素。没有预先计算此 count 的函数,因此您需要获取宽度的绝对值并加1。
在C / C ++中:
int count = abs(myRect.right - myRect.left) + 1;