Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Класс
Похоже на структуру Windows RECT .
Синтаксис
class CRect : public tagRECT
Участники
Открытые конструкторы
| Имя | Описание |
|---|---|
CRect::CRect |
Формирует объект CRect. |
Открытые методы
| Имя | Описание |
|---|---|
CRect::BottomRight |
Возвращает точку в правом CRectнижнем углу. |
CRect::CenterPoint |
Возвращает центральную точку CRect. |
CRect::CopyRect |
Копирует размеры исходного прямоугольника CRectв . |
CRect::DeflateRect |
Уменьшает ширину и высоту CRect. |
CRect::EqualRect |
Определяет, равно ли CRect заданному прямоугольнику. |
CRect::Height |
Вычисляет высоту CRect. |
CRect::InflateRect |
Увеличивает ширину и высоту CRect. |
CRect::IntersectRect |
Задает CRect значение, равное пересечению двух прямоугольников. |
CRect::IsRectEmpty |
Определяет, является ли CRect пустым.
CRect значение пусто, если ширина и (или) высота равна 0. |
CRect::IsRectNull |
Определяет, равны ли topпеременные элемента , bottomleftи right переменные-члены равны 0. |
CRect::MoveToX |
Перемещается CRect в указанную координату x. |
CRect::MoveToXY |
Перемещается CRect к указанным координатам x и y. |
CRect::MoveToY |
Перемещается CRect в указанную координату y. |
CRect::NormalizeRect |
Стандартизирует высоту и ширину CRect. |
CRect::OffsetRect |
Перемещается CRect по указанным смещениям. |
CRect::PtInRect |
Определяет, находится ли указанная точка внутри CRect. |
CRect::SetRect |
Задает размеры CRect. |
CRect::SetRectEmpty |
Задает CRect пустой прямоугольник (все координаты равны 0). |
CRect::Size |
Вычисляет размер CRect. |
CRect::SubtractRect |
Вычитает один прямоугольник из другого. |
CRect::TopLeft |
Возвращает верхнюю левую точку CRect. |
CRect::UnionRect |
Задает CRect значение, равное союзу двух прямоугольников. |
CRect::Width |
Вычисляет ширину CRect. |
Открытые операторы
| Имя | Описание |
|---|---|
CRect::operator - |
Вычитает указанные смещения из CRect или дефляции CRect и возвращает результирующий CRectрезультат. |
CRect::operator LPCRECT |
Преобразует CRect в LPCRECT. |
CRect::operator LPRECT |
Преобразует CRect в LPRECT. |
CRect::operator != |
Определяет, не равно ли CRect прямоугольнику. |
CRect::operator & |
Создает пересечение CRect и прямоугольник и возвращает результирующий CRectобъект. |
CRect::operator &= |
Задает CRect значение, равное пересечению CRect и прямоугольнику. |
CRect::operator | |
Создает объединение CRect и прямоугольник и возвращает результирующий CRectобъект. |
CRect::operator |= |
Задает CRect значение, равное объединению CRect и прямоугольнику. |
CRect::operator + |
Добавляет указанные смещения CRect в или увеличивается CRect и возвращает результирующий CRectрезультат. |
CRect::operator += |
Добавляет указанные смещения в CRect или раздувается CRect. |
CRect::operator = |
Копирует размеры прямоугольника CRectв . |
CRect::operator -= |
Вычитает указанные смещения из CRect или отложений CRect. |
CRect::operator == |
Определяет, равно ли CRect прямоугольник. |
Замечания
CRect также включает функции-члены для управления объектами и структурами CRect Windows RECT .
CRect Объект может передаваться в качестве параметра функции, где бы ни была RECT структура или LPCRECTLPRECT может быть передана.
Примечание.
Этот класс является производным tagRECT от структуры. (Имя является менее часто используемым именем tagRECT для RECT структуры.) Это означает, что члены данных (left, , toprightиbottom) RECT структуры доступны для элементов CRectданных.
Содержит CRect переменные-члены, определяющие верхние и нижние правые точки прямоугольника.
При указании CRectнужно тщательно создать его таким образом, чтобы оно нормализовано , иными словами, таким образом, значение левой координаты меньше правого, а верхняя — меньше нижнего. Например, верхний левый (10 10) и нижний правый (20 20 20) определяет нормализованный прямоугольник, но верхний левый (20 20 20) и нижний правый (10 10) определяет ненормализованный прямоугольник. Если прямоугольник не нормализован, многие CRect функции-члены могут возвращать неправильные результаты. (См CRect::NormalizeRect . список этих функций.) Перед вызовом функции, требующей нормализованных прямоугольников, можно нормализовать ненормализованные прямоугольники, вызвав функцию NormalizeRect .
Используйте осторожность при управлении CRect функциями-членами и CDC::DPtoLP функциями-членамиCDC::LPtoDP. Если режим сопоставления контекста отображения такой, что степень y является отрицательной, как и в MM_LOENGLISH, то CDC::DPtoLP преобразуется CRect таким образом, чтобы его верхняя часть была больше нижней. Такие функции, как Height и Size затем возвращают отрицательные значения для высоты преобразованного CRect, и прямоугольник будет не нормализован.
При использовании перегруженных CRect операторов первый операнд должен иметь значение CRect; второе может быть RECT структурой CRect или объектом.
Иерархия наследования
tagRECT
CRect
Требования
Заголовок:atltypes.h
CRect::BottomRight
Координаты возвращаются в качестве ссылки на CPoint объект, содержащийся в CRect.
CPoint& BottomRight() throw();
const CPoint& BottomRight() const throw();
Возвращаемое значение
Координаты нижнего правого угла прямоугольника.
Замечания
Эту функцию можно использовать для получения или задания нижнего правого угла прямоугольника. Задайте угол с помощью этой функции слева от оператора назначения.
Пример
// use BottomRight() to retrieve the bottom
// right POINT
CRect rect(210, 150, 350, 900);
CPoint ptDown;
ptDown = rect.BottomRight();
// ptDown is now set to (350, 900)
ASSERT(ptDown == CPoint(350, 900));
// or, use BottomRight() to set the bottom
// right POINT
CRect rect2(10, 10, 350, 350);
CPoint ptLow(180, 180);
CRect rect2(10, 10, 350, 350);
CPoint ptLow(180, 180);
rect2.BottomRight() = ptLow;
// rect2 is now (10, 10, 180, 180)
ASSERT(rect2 == CRect(10, 10, 180, 180));
CRect::CenterPoint
Вычисляет центральную точку CRect путем добавления левых и правых значений и деления на два, а также добавления верхних и нижних значений и деления на два.
CPoint CenterPoint() const throw();
Возвращаемое значение
CPoint Объект, представляющий собой центральную точкуCRect.
Пример
// Code from this OnPaint() implementation can be pasted into your own application
// to draw lines that would look like a letter "Y" within your dialog.
void CMyDlg::OnPaint()
{
CPaintDC dc(this);
// device context for painting
// get the size and position of the client area of
// your window
CRect rect;
GetClientRect(&rect);
// Move the current pen to the top left of the window. We call the
// TopLeft() member of CRect here and it returns a CPoint object we
// pass to the override of CDC::MoveTo() that accepts a CPoint.
dc.MoveTo(rect.TopLeft());
// Draw a line from the top left to the center of the window.
// CenterPoint() gives us the middle point of the window as a
// CPoint, and since CDC::LineTo() has an override that accepts a
// CPoint, we can just pass it along.
dc.LineTo(rect.CenterPoint());
// Now, draw a line to the top right of the window. There's no
// CRect member which returns a CPoint for the top right of the
// window, so we'll reference the CPoint members directly and call
// the CDC::LineTo() override which takes two integers.
dc.LineTo(rect.right, rect.top);
// The top part of the "Y" is drawn. Now, we'll draw the stem. We
// start from the center point.
dc.MoveTo(rect.CenterPoint());
// and then draw to the middle of the bottom edge of the window.
// We'll get the x-coordinate from the x member of the CPOINT
// returned by CenterPoint(), and the y value comes directly from
// the rect.
dc.LineTo(rect.CenterPoint().x, rect.bottom);
}
CRect::CopyRect
Копирует lpSrcRect прямоугольник в CRect.
void CopyRect(LPCRECT lpSrcRect) throw();
Параметры
lpSrcRect
Указывает на структуру RECT или CRect объект, который нужно скопировать.
Пример
CRect rectSource(35, 10, 125, 10);
CRect rectDest;
rectDest.CopyRect(&rectSource);
// rectDest is now set to (35, 10, 125, 10)
RECT rectSource2;
rectSource2.left = 0;
rectSource2.top = 0;
rectSource2.bottom = 480;
rectSource2.right = 640;
rectDest.CopyRect(&rectSource2);
// works against RECT structures, too!
// rectDest is now set to (0, 0, 640, 480)
CRect::CRect
Формирует объект CRect.
CRect() throw();
CRect(int l, int t, int r, int b) throw();
CRect(const RECT& srcRect) throw();
CRect(LPCRECT lpSrcRect) throw();
CRect(POINT point, SIZE size) throw();
CRect(POINT topLeft, POINT bottomRight) throw();
Параметры
l
Указывает левую позицию CRect.
t
Указывает верхнюю часть CRect.
r
Указывает правильную позицию CRect.
b
Указывает нижнее CRectзначение .
srcRect
Ссылается на структуру RECT с координатами.CRect
lpSrcRect
Указывает на структуру RECT с координатами для CRect.
point
Указывает точку источника для созданного прямоугольника. Соответствует левому верхнему углу.
size
Указывает перемещение из левого верхнего угла в правый нижний угол прямоугольника, который будет построен.
topLeft
Указывает верхнюю левую позицию CRect.
bottomRight
Указывает нижнее правое положение CRect.
Замечания
Если аргументы не заданы, left, , toprightи bottom члены имеют значение 0.
CRectКонструкторы (const RECT&) и CRect(LPCRECT) выполняют .CopyRect Другие конструкторы инициализируют переменные-члены объекта напрямую.
Пример
// default constructor is equivalent to CRect(0, 0, 0, 0)
CRect emptyRect;
// four-integers are left, top, right, and bottom
CRect rect(0, 0, 100, 50);
ASSERT(rect.Width() == 100);
ASSERT(rect.Height() == 50);
// Initialize from RECT structure
RECT sdkRect;
sdkRect.left = 0;
sdkRect.top = 0;
sdkRect.right = 100;
sdkRect.bottom = 50;
CRect rect2(sdkRect);
// by reference
CRect rect3(&sdkRect);
// by address
ASSERT(rect2 == rect);
ASSERT(rect3 == rect);
// from a point and a size
CPoint pt(0, 0);
CSize sz(100, 50);
CRect rect4(pt, sz);
ASSERT(rect4 == rect2);
// from two points
CPoint ptBottomRight(100, 50);
CRect rect5(pt, ptBottomRight);
ASSERT(rect5 == rect4);
CRect::DeflateRect
DeflateRect дефляция путем CRect перемещения сторон к центру.
void DeflateRect(int x, int y) throw();
void DeflateRect(SIZE size) throw();
void DeflateRect(LPCRECT lpRect) throw();
void DeflateRect(int l, int t, int r, int b) throw();
Параметры
x
Указывает количество единиц, которые нужно отложить в левой и правой CRectчасти.
y
Указывает количество единиц, которые нужно отложить сверху и внизу CRect.
size
A SIZE или CSize указывает количество единиц для дефляции CRect. Значение cx указывает количество единиц, которые нужно отложить слева и справа, а cy значение указывает количество единиц, которые нужно отложить сверху и внизу.
lpRect
Указывает на RECT структуру или CRect указывает количество единиц для разложения каждой стороны.
l
Указывает количество единиц для дефляции левой CRectстороны.
t
Указывает количество единиц, которые нужно отложить в верхней части CRect.
r
Указывает количество единиц для дефляции правой CRectстороны.
b
Указывает количество единиц, которые нужно отложить в нижней CRectчасти.
Замечания
Для этого DeflateRect добавьте единицы влево и сверху и вычитает единицы из правого и нижнего. Параметры DeflateRect подписываются значения; положительные значения деффулируются CRect и отрицательные значения раздувают его.
Первые две перегрузки сдувают обе пары противоположных сторон CRect таким образом, чтобы ее общая ширина снизилась на два раза (илиx) и ее общая высота уменьшается на два раза cxy (илиcy). Остальные две перегрузки перегружают каждую сторону CRect независимо от других.
Пример
CRect rect(10, 10, 50, 50);
rect.DeflateRect(1, 2);
ASSERT(rect.left == 11 && rect.right == 49);
ASSERT(rect.top == 12 && rect.bottom == 48);
CRect rect2(10, 10, 50, 50);
CRect rectDeflate(1, 2, 3, 4);
rect2.DeflateRect(&rectDeflate);
ASSERT(rect2.left == 11 && rect2.right == 47);
ASSERT(rect2.top == 12 && rect2.bottom == 46);
CRect::EqualRect
Определяет, равно ли CRect заданному прямоугольнику.
BOOL EqualRect(LPCRECT lpRect) const throw();
Параметры
lpRect
Указывает на RECT структуру или CRect объект, содержащий координаты прямоугольника в левом верхнем и правом нижнем углу.
Возвращаемое значение
Ненулевое значение, если два прямоугольника имеют одинаковые верхние, левые, нижние и правые значения; в противном случае — 0.
Примечание.
Оба прямоугольника должны быть нормализованы или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect нормализацию прямоугольников.
Пример
CRect rect1(35, 150, 10, 25);
CRect rect2(35, 150, 10, 25);
CRect rect3(98, 999, 6, 3);
ASSERT(rect1.EqualRect(rect2));
ASSERT(!rect1.EqualRect(rect3));
// works just fine against RECTs, as well
RECT test;
test.left = 35;
test.top = 150;
test.right = 10;
test.bottom = 25;
ASSERT(rect1.EqualRect(&test));
CRect::Height
Вычисляет высоту CRect путем вычитания верхнего значения из нижнего значения.
int Height() const throw();
Возвращаемое значение
Высота CRect.
Замечания
Полученное значение может быть отрицательным.
Примечание.
Прямоугольник должен быть нормализован или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect нормализацию прямоугольника.
Пример
CRect rect(20, 30, 80, 70);
int nHt = rect.Height();
// nHt is now 40
ASSERT(nHt == 40);
CRect::InflateRect
InflateRect раздувается CRect , перемещая стороны от своего центра.
void InflateRect(int x, int y) throw();
void InflateRect(SIZE size) throw();
void InflateRect(LPCRECT lpRect) throw();
void InflateRect(int l, int t, int r, int b) throw();
Параметры
x
Указывает количество единиц для раздувания левой и правой CRectсторон.
y
Указывает количество единиц для раздувания верхней и нижней CRectчасти.
size
A SIZE или CSize указывает количество единиц для раздувания CRect. Значение cx указывает количество единиц для раздувания левой и правой сторон, а cy значение указывает количество единиц для раздувания верхнего и нижнего.
lpRect
Указывает на RECT структуру или CRect указывает количество единиц для раздувания каждой стороны.
l
Указывает количество единиц для раздувания левой CRectстороны.
t
Указывает количество единиц для раздувания верхней части CRect.
r
Указывает количество единиц для раздувания правой CRectстороны.
b
Указывает количество единиц для раздувания нижней CRectчасти.
Замечания
Для этого InflateRect вычитает единицы из левого и верхнего и добавляет единицы вправо и вниз. Параметры InflateRect подписываются значения; положительные значения раздуваются и отрицательные значения деффулируют CRect его.
Первые две перегрузки раздувают обе пары противоположных сторонCRect, чтобы ее общая ширина увеличилась в два раза (илиx) и ее общая высота увеличивается на два раза cxy (илиcy). Другие две перегрузки раздувают каждую сторону CRect независимо от других.
Пример
CRect rect(0, 0, 300, 300);
rect.InflateRect(50, 200);
// rect is now (-50, -200, 350, 500)
ASSERT(rect == CRect(-50, -200, 350, 500));
CRect::IntersectRect
Делает равным CRect пересечению двух существующих прямоугольников.
BOOL IntersectRect(LPCRECT lpRect1, LPCRECT lpRect2) throw();
Параметры
lpRect1
Указывает на структуру или RECT объект, содержащий исходный CRect прямоугольник.
lpRect2
Указывает на структуру или RECT объект, содержащий исходный CRect прямоугольник.
Возвращаемое значение
Ненулевое значение, если пересечение не является пустым; Значение 0, если пересечение пусто.
Замечания
Пересечение является крупнейшим прямоугольником, содержащимся в обоих существующих прямоугольниках.
Примечание.
Оба прямоугольника должны быть нормализованы или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect нормализацию прямоугольников.
Пример
CRect rectOne(125, 0, 150, 200);
CRect rectTwo(0, 75, 350, 95);
CRect rectInter;
rectInter.IntersectRect(rectOne, rectTwo);
ASSERT(rectInter == CRect(125, 75, 150, 95));
// operator &= can do the same task:
CRect rectInter2 = rectOne;
rectInter2 &= rectTwo;
ASSERT(rectInter2 == CRect(125, 75, 150, 95));
CRect::IsRectEmpty
Определяет, является ли CRect пустым.
BOOL IsRectEmpty() const throw();
Возвращаемое значение
Ненулевое значение, если CRect пусто; 0, если CRect не пусто.
Замечания
Прямоугольник пуст, если ширина и(или) высота равна 0 или отрицательно. Отличается от IsRectNullтого, что определяет, равны ли все координаты прямоугольника нулю.
Примечание.
Прямоугольник должен быть нормализован или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect нормализацию прямоугольника.
Пример
CRect rectNone(0, 0, 0, 0);
CRect rectSome(35, 50, 135, 150);
ASSERT(rectNone.IsRectEmpty());
ASSERT(!rectSome.IsRectEmpty());
CRect rectEmpty(35, 35, 35, 35);
ASSERT(rectEmpty.IsRectEmpty());
CRect::IsRectNull
Определяет, равны ли значения верхнего, левого, нижнего и правого значений CRect равны 0.
BOOL IsRectNull() const throw();
Возвращаемое значение
Ненулевое значение, если CRectверхние, левые, нижние и правые значения равны 0; в противном случае — 0.
Замечания
Отличается от IsRectEmpty, который определяет, является ли прямоугольник пустым.
Пример
CRect rectNone(0, 0, 0, 0);
CRect rectSome(35, 50, 135, 150);
ASSERT(rectNone.IsRectNull());
ASSERT(!rectSome.IsRectNull());
// note that null means _all_ zeros
CRect rectNotNull(0, 0, 35, 50);
ASSERT(!rectNotNull.IsRectNull());
CRect::MoveToX
Вызовите эту функцию, чтобы переместить прямоугольник в абсолютную координату x, указанную в xформате .
void MoveToX(int x) throw();
Параметры
x
Абсолютная координата x для левого верхнего угла прямоугольника.
Пример
CRect rect(0, 0, 100, 100);
rect.MoveToX(10);
// rect is now (10, 0, 110, 100);
ASSERT(rect == CRect(10, 0, 110, 100));
CRect::MoveToXY
Вызовите эту функцию, чтобы переместить прямоугольник в абсолютные координаты x и y.
void MoveToXY(int x, int y) throw();
void MoveToXY(POINT point) throw();
Параметры
x
Абсолютная координата x для левого верхнего угла прямоугольника.
y
Абсолютная координата y для левого верхнего угла прямоугольника.
point
Структура POINT , указывающая абсолютный левый верхний угол прямоугольника.
Пример
CRect rect(0, 0, 100, 100);
rect.MoveToXY(10, 10);
// rect is now (10, 10, 110, 110);
ASSERT(rect == CRect(10, 10, 110, 110));
CRect::MoveToY
Вызовите эту функцию, чтобы переместить прямоугольник в абсолютную координату y, указанную .y
void MoveToY(int y) throw();
Параметры
y
Абсолютная координата y для левого верхнего угла прямоугольника.
Пример
CRect rect(0, 0, 100, 100);
rect.MoveToY(10);
// rect is now (0, 10, 100, 110);
ASSERT(rect == CRect(0, 10, 100, 110));
CRect::NormalizeRect
Нормализует значение CRect , чтобы высота и ширина были положительными.
void NormalizeRect() throw();
Замечания
Прямоугольник нормализуется для размещения четвертого квадранта, который Windows обычно использует для координат.
NormalizeRect сравнивает верхние и нижние значения и переключает их, если верхняя часть больше нижней. Аналогичным образом, он переключает значения слева и справа, если левая больше правой. Эта функция полезна при работе с различными режимами сопоставления и перевернутыми прямоугольниками.
Примечание.
Следующие CRect функции-члены требуют нормализованных прямоугольников для правильной работы: Height, WidthSizeIsRectEmptyPtInRectEqualRectUnionRectIntersectRectSubtractRectoperator ==operator !=operator |operator |=operator &и .operator &=
Пример
CRect rect1(110, 100, 250, 310);
CRect rect2(250, 310, 110, 100);
rect1.NormalizeRect();
rect2.NormalizeRect();
ASSERT(rect1 == rect2);
CRect::OffsetRect
Перемещается CRect по указанным смещениям.
void OffsetRect(int x, int y) throw();
void OffsetRect(POINT point) throw();
void OffsetRect(SIZE size) throw();
Параметры
x
Указывает сумму для перемещения влево или вправо. Он должен быть отрицательным для перемещения влево.
y
Указывает сумму для перемещения вверх или вниз. Он должен быть отрицательным, чтобы двигаться вверх.
point
Содержит структуру или POINT объект, указывающий CPoint оба измерения, по которым следует перемещаться.
size
Содержит структуру или SIZE объект, указывающий CSize оба измерения, по которым следует перемещаться.
Замечания
Перемещает CRectx единицы вдоль оси x и y единиц вдоль оси Y. И xy параметры подписываются значениями, поэтому CRect их можно переместить влево или вправо и вниз.
Пример
CRect rect(0, 0, 35, 35);
rect.OffsetRect(230, 230);
// rect is now (230, 230, 265, 265)
ASSERT(rect == CRect(230, 230, 265, 265));
CRect::operator LPCRECT
Преобразует CRect в LPCRECT.
operator LPCRECT() const throw();
Замечания
При использовании этой функции не требуется оператор адреса (&). Этот оператор будет автоматически использоваться при передаче CRect объекта в функцию, которая ожидает.LPCRECT
CRect::operator LPRECT
Преобразует CRect в LPRECT.
operator LPRECT() throw();
Замечания
При использовании этой функции не требуется оператор адреса (&). Этот оператор будет автоматически использоваться при передаче CRect объекта в функцию, которая ожидает.LPRECT
Пример
Пример см. в примере CRect::operator LPCRECT.
CRect::operator =
srcRect
CRectНазначается .
void operator=(const RECT& srcRect) throw();
Параметры
srcRect
Ссылается на исходный прямоугольник. Может быть или RECTCRect.
Пример
CRect rect(0, 0, 127, 168);
CRect rect2;
rect2 = rect;
ASSERT(rect2 == CRect(0, 0, 127, 168));
CRect::operator ==
Определяет, равен rect ли CRect он, сравнивая координаты их верхних и правых углов в правом верхнем углу.
BOOL operator==(const RECT& rect) const throw();
Параметры
rect
Ссылается на исходный прямоугольник. Может быть или RECTCRect.
Возвращаемое значение
Ненулевое значение, если равно; в противном случае — 0.
Замечания
Примечание.
Оба прямоугольника должны быть нормализованы или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect нормализацию прямоугольников.
Пример
CRect rect1(35, 150, 10, 25);
CRect rect2(35, 150, 10, 25);
CRect rect3(98, 999, 6, 3);
ASSERT(rect1 == rect2);
// works just fine against RECTs, as well
RECT test;
test.left = 35;
test.top = 150;
test.right = 10;
test.bottom = 25;
ASSERT(rect1 == test);
CRect::operator !=
Определяет, не равен rect ли CRect он, сравнивая координаты их верхних и правых углов в правом верхнем углу.
BOOL operator!=(const RECT& rect) const throw();
Параметры
rect
Ссылается на исходный прямоугольник. Может быть или RECTCRect.
Возвращаемое значение
Ненулевое значение, если оно не равно; в противном случае — 0.
Замечания
Примечание.
Оба прямоугольника должны быть нормализованы или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect нормализацию прямоугольников.
Пример
CRect rect1(35, 150, 10, 25);
CRect rect2(35, 150, 10, 25);
CRect rect3(98, 999, 6, 3);
ASSERT(rect1 != rect3);
// works just fine against RECTs, as well
RECT test;
test.left = 35;
test.top = 150;
test.right = 10;
test.bottom = 25;
ASSERT(rect3 != test);
CRect::operator +=
Первые две перегрузки перемещаются CRect по указанным смещениям.
void operator+=(POINT point) throw();
void operator+=(SIZE size) throw();
void operator+=(LPCRECT lpRect) throw();
Параметры
point
POINT Структура или CPoint объект, указывающий количество единиц для перемещения прямоугольника.
size
SIZE Структура или CSize объект, указывающий количество единиц для перемещения прямоугольника.
lpRect
Указывает на RECT структуру или CRect объект, содержащий количество единиц для раздувания каждой CRectстороны.
Замечания
Значения параметра x и y (или cxcy) добавляются CRectв .
Третья перегрузка увеличивается CRect по количеству единиц, указанных в каждом элементе параметра.
Пример
CRect rect1(100, 235, 200, 335);
CPoint pt(35, 65);
CRect rect2(135, 300, 235, 400);
rect1 += pt;
ASSERT(rect1 == rect2);
CRect::operator -=
Первые две перегрузки перемещаются CRect по указанным смещениям.
void operator-=(POINT point) throw();
void operator-=(SIZE size) throw();
void operator-=(LPCRECT lpRect) throw();
Параметры
point
POINT Структура или CPoint объект, указывающий количество единиц для перемещения прямоугольника.
size
SIZE Структура или CSize объект, указывающий количество единиц для перемещения прямоугольника.
lpRect
Указывает на RECT структуру или CRect объект, содержащий количество единиц для дефляции каждой CRectстороны.
Замечания
x Значения параметра и y (или cxcy) вычитаются из CRect.
Третья перегрузка отклоняется CRect по количеству единиц, указанных в каждом элементе параметра. Обратите внимание, что эта перегрузка выполняет такие функции, как DeflateRect.
Пример
CRect rect1(100, 235, 200, 335);
CPoint pt(35, 65);
rect1 -= pt;
CRect rectResult(65, 170, 165, 270);
ASSERT(rect1 == rectResult);
CRect::operator &=
Задает CRect значение, равное пересечению CRect и rect.
void operator&=(const RECT& rect) throw();
Параметры
rect
Содержит или RECTCRect.
Замечания
Пересечение — это самый большой прямоугольник, содержащийся в обоих прямоугольниках.
Примечание.
Оба прямоугольника должны быть нормализованы или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect нормализацию прямоугольников.
Пример
Пример см. в примере CRect::IntersectRect.
CRect::operator |=
Задает CRect значение, равное объединению CRect и rect.
void operator|=(const RECT& rect) throw();
Параметры
rect
Содержит или CRectRECT.
Замечания
Объединение — это самый маленький прямоугольник, содержащий оба исходных прямоугольника.
Примечание.
Оба прямоугольника должны быть нормализованы или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect нормализацию прямоугольников.
Пример
CRect rect1(100, 0, 200, 300);
CRect rect2(0, 100, 300, 200);
rect1 |= rect2;
CRect rectResult(0, 0, 300, 300);
ASSERT(rectResult == rect1);
CRect::operator +
Первые две перегрузки возвращают CRect объект, равный CRect перемещенным указанным смещениям.
CRect operator+(POINT point) const throw();
CRect operator+(LPCRECT lpRect) const throw();
CRect operator+(SIZE size) const throw();
Параметры
point
POINT Структура или CPoint объект, указывающий количество единиц для перемещения возвращаемого значения.
size
SIZE Структура или CSize объект, указывающий количество единиц для перемещения возвращаемого значения.
lpRect
Указывает на RECT структуру или CRect объект, содержащий количество единиц для раздувания каждой стороны возвращаемого значения.
Возвращаемое значение
Результат CRect перемещения или раздуния CRect по количеству единиц, указанных в параметре.
Замечания
x Параметры параметра и y (или cxcy) добавляются в CRectположение.
Третья перегрузка возвращает новое CRect значение, CRect равное количеству единиц, указанных в каждом элементе параметра.
Пример
CRect rect1(100, 235, 200, 335);
CPoint pt(35, 65);
CRect rect2;
rect2 = rect1 + pt;
CRect rectResult(135, 300, 235, 400);
ASSERT(rectResult == rect2);
CRect::operator -
Первые две перегрузки возвращают CRect объект, равный CRect перемещенным указанным смещениям.
CRect operator-(POINT point) const throw();
CRect operator-(SIZE size) const throw();
CRect operator-(LPCRECT lpRect) const throw();
Параметры
point
POINT Структура или CPoint объект, указывающий количество единиц для перемещения возвращаемого значения.
size
SIZE Структура или CSize объект, указывающий количество единиц для перемещения возвращаемого значения.
lpRect
Указывает на RECT структуру или CRect объект, содержащий количество единиц для дефляции каждой стороны возвращаемого значения.
Возвращаемое значение
Результат CRect перемещения или дефляирования CRect по количеству единиц, указанных в параметре.
Замечания
Параметры параметра x и y (или cxcy) вычитаются из CRectпозиции.
Третья перегрузка возвращает новое CRect значение, равное CRect сложенным по количеству единиц, указанных в каждом элементе параметра. Обратите внимание, что эта перегрузка, например DeflateRect, не SubtractRect.
Пример
CRect rect1(100, 235, 200, 335);
CPoint pt(35, 65);
CRect rect2;
rect2 = rect1 - pt;
CRect rectResult(65, 170, 165, 270);
ASSERT(rect2 == rectResult);
CRect::operator &
Возвращает значение CRect , которое является пересечением CRect и прямоугольникой2.
CRect operator&(const RECT& rect2) const throw();
Параметры
rect2
Содержит или RECTCRect.
Возвращаемое значение
А CRect это пересечение CRect и rect2.
Замечания
Пересечение — это самый большой прямоугольник, содержащийся в обоих прямоугольниках.
Примечание.
Оба прямоугольника должны быть нормализованы или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect нормализацию прямоугольников.
Пример
CRect rect1(100, 0, 200, 300);
CRect rect2(0, 100, 300, 200);
CRect rect3;
rect3 = rect1 & rect2;
CRect rectResult(100, 100, 200, 200);
ASSERT(rectResult == rect3);
CRect::operator |
CRect Возвращает объединение CRect и rect2.
CRect operator|(const RECT&
rect2) const throw();
Параметры
rect2
Содержит или RECTCRect.
Возвращаемое значение
А CRect это объединение CRect и rect2.
Замечания
Объединение — это самый маленький прямоугольник, содержащий оба прямоугольника.
Примечание.
Оба прямоугольника должны быть нормализованы или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect нормализацию прямоугольников.
Пример
CRect rect1(100, 0, 200, 300);
CRect rect2(0, 100, 300, 200);
CRect rect3;
rect3 = rect1 | rect2;
CRect rectResult(0, 0, 300, 300);
ASSERT(rectResult == rect3);
CRect::PtInRect
Определяет, находится ли указанная точка внутри CRect.
BOOL PtInRect(POINT point) const throw();
Параметры
point
Содержит структуру POINT или CPoint объект.
Возвращаемое значение
Ненулевое значение, если точка находится в CRectпределах; в противном случае — 0.
Замечания
Точка находится внутри CRect , если она находится на левой или верхней стороне или находится в пределах всех четырех сторон. Точка на правой или нижней стороне находится вне CRect.
Примечание.
Прямоугольник должен быть нормализован или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect нормализацию прямоугольника.
Пример
CRect rect(5, 5, 100, 100);
CPoint pt1(35, 50);
CPoint pt2(125, 298);
// this is true, because pt1 is inside the rectangle
ASSERT(rect.PtInRect(pt1));
// this is NOT true, because pt2 is outside the rectangle
ASSERT(!rect.PtInRect(pt2));
// note that the right and the bottom aren't inside
ASSERT(!rect.PtInRect(CPoint(35, 100)));
ASSERT(!rect.PtInRect(CPoint(100, 98)));
// but the top and the left are inside
ASSERT(rect.PtInRect(CPoint(5, 65)));
ASSERT(rect.PtInRect(CPoint(88, 5)));
// and that PtInRect() works against a POINT, too
POINT pt;
pt.x = 35;
pt.y = 50;
ASSERT(rect.PtInRect(pt));
CRect::SetRect
Задает размеры CRect заданных координат.
void SetRect(int x1, int y1, int x2, int y2) throw();
Параметры
x1
Указывает координату x верхнего левого угла.
y1
Задает координату y верхнего левого угла.
x2
Задает координату x правого нижнего угла.
y2
Задает координату y правого нижнего угла.
Пример
CRect rect;
rect.SetRect(256, 256, 512, 512);
ASSERT(rect == CRect(256, 256, 512, 512));
CRect::SetRectEmpty
Делает CRect прямоугольник null, задав все координаты равным нулю.
void SetRectEmpty() throw();
Пример
CRect rect;
rect.SetRectEmpty();
// rect is now (0, 0, 0, 0)
ASSERT(rect.IsRectEmpty());
CRect::SIZE
cx Элементы cy возвращаемого значения содержат высоту и ширинуCRect.
CSize Size() const throw();
Возвращаемое значение
Объект CSize , содержащий размер CRect.
Замечания
Высота или ширина могут быть отрицательными.
Примечание.
Прямоугольник должен быть нормализован или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect нормализацию прямоугольника.
Пример
CRect rect(10, 10, 50, 50);
CSize sz = rect.Size();
ASSERT(sz.cx == 40 && sz.cy == 40);
CRect::SubtractRect
Делает измерения CRect равными вычитания lpRectSrc2 из lpRectSrc1.
BOOL SubtractRect(LPCRECT lpRectSrc1, LPCRECT lpRectSrc2) throw();
Параметры
lpRectSrc1
Указывает на RECT структуру или CRect объект, из которого вычитается прямоугольник.
lpRectSrc2
Указывает на RECT структуру или CRect объект, который должен быть вычитан из прямоугольника, на который указывает lpRectSrc1 параметр.
Возвращаемое значение
Ненулевое значение, если функция выполнена успешно; в противном случае — 0.
Замечания
Вычитание является наименьшим прямоугольником, который содержит все точки, lpRectScr1 которые не находятся на пересечении lpRectScr1 и lpRectScr2.
Прямоугольник, указанный параметром lpRectSrc1 , будет без изменений, если прямоугольник, указанный не полностью перекрывает прямоугольник, указанный lpRectSrc2lpRectSrc1 по крайней мере одним из направлений X-или Y.
Например, если lpRectSrc1 бы они были (10 10, 100 100) и lpRectSrc2 были (50 50, 150 150), прямоугольник, на который указывает lpRectSrc1 , будет без изменений при возврате функции. Если lpRectSrc1 бы они были (10 10, 100 100) и lpRectSrc2 были (50 10, 150 150), однако прямоугольник, на который указывает lpRectSrc1 , будет содержать координаты (10 10, 50 100) при возврате функции.
SubtractRect не совпадает с оператором - или оператором -=. Ни один из этих операторов никогда не вызывает SubtractRect.
Примечание.
Оба прямоугольника должны быть нормализованы или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect нормализацию прямоугольников.
Пример
RECT rectOne;
RECT rectTwo;
rectOne.left = 10;
rectOne.top = 10;
rectOne.bottom = 100;
rectOne.right = 100;
rectTwo.left = 50;
rectTwo.top = 10;
rectTwo.bottom = 150;
rectTwo.right = 150;
CRect rectDiff;
rectDiff.SubtractRect(&rectOne, &rectTwo);
CRect rectResult(10, 10, 50, 100);
ASSERT(rectDiff == rectResult);
// works for CRect, too, since there is
// implicit CRect -> LPCRECT conversion
CRect rect1(10, 10, 100, 100);
CRect rect2(50, 10, 150, 150);
CRect rectOut;
rectOut.SubtractRect(rect1, rect2);
ASSERT(rectResult == rectOut);
CRect::TopLeft
Координаты возвращаются в качестве ссылки на CPoint объект, содержащийся в CRect.
CPoint& TopLeft() throw();
const CPoint& TopLeft() const throw();
Возвращаемое значение
Координаты левого верхнего угла прямоугольника.
Замечания
Эту функцию можно использовать для получения или задания левого верхнего угла прямоугольника. Задайте угол с помощью этой функции слева от оператора назначения.
Пример
Пример см. в примере CRect::CenterPoint.
CRect::UnionRect
Делает измерения CRect равными объединению двух исходных прямоугольников.
BOOL UnionRect(LPCRECT lpRect1, LPCRECT lpRect2) throw();
Параметры
lpRect1
Указывает на RECT или CRect содержит исходный прямоугольник.
lpRect2
Указывает на RECT или CRect содержит исходный прямоугольник.
Возвращаемое значение
Ненулевое значение, если объединение не пусто; Значение 0, если объединение пусто.
Замечания
Объединение — это самый маленький прямоугольник, содержащий оба исходных прямоугольника.
Windows игнорирует размеры пустого прямоугольника; То есть прямоугольник, который не имеет высоты или не имеет ширины.
Примечание.
Оба прямоугольника должны быть нормализованы или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect нормализацию прямоугольников.
Пример
CRect rect1(100, 0, 200, 300);
CRect rect2(0, 100, 300, 200);
CRect rect3;
rect3.UnionRect(&rect1, &rect2);
CRect rectResult(0, 0, 300, 300);
ASSERT(rectResult == rect3);
CRect::Width
Вычисляет ширину CRect , вычитая левое значение из правого значения.
int Width() const throw();
Возвращаемое значение
Ширина CRect.
Замечания
Ширина может быть отрицательной.
Примечание.
Прямоугольник должен быть нормализован или эта функция может завершиться ошибкой. Перед вызовом этой функции можно вызвать NormalizeRect нормализацию прямоугольника.
Пример
CRect rect(20, 30, 80, 70);
int nWid = rect.Width();
// nWid is now 60
ASSERT(nWid == 60);