关于课程CRect&矩形,宽度=右 - 左

时间:2015-05-05 01:42:29

标签: c++ image-processing mfc rect

这是关于C ++和mfc的问题。 例如,left = 3,right = 8.是不是意味着从左到右有6个像素?为什么宽度=右 - 左?如果我知道一个代表图像rect的矩形,当我为图像数据分配内存时,我应该使用哪一个?宽度=左右,或宽度=右 - 左+ 1?我是图像处理的初学者。这真让我困惑。谢谢你的帮助!

2 个答案:

答案 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;