Класс CRgn

Инкапсулирует область интерфейса графических устройств Windows (GDI).

Синтаксис

class CRgn : public CGdiObject

Участники

Открытые конструкторы

Имя Описание
CRgn::CRgn Формирует объект CRgn.

Открытые методы

Имя Описание
CRgn::CombineRgn CRgn Задает объект таким образом, чтобы он был эквивалентен объединению двух указанных CRgn объектов.
CRgn::CopyRgn CRgn Задает объект таким образом, чтобы он был копией указанного CRgn объекта.
CRgn::CreateEllipticRgn Инициализирует CRgn объект с эллиптической областью.
CRgn::CreateEllipticRgnIndirect Инициализирует CRgn объект с эллиптической областью, определенной структурой RECT .
CRgn::CreateFromData Создает регион из заданного региона и данных преобразования.
CRgn::CreateFromPath Создает регион из пути, выбранного в заданном контексте устройства.
CRgn::CreatePolygonRgn Инициализирует CRgn объект с многоугольником. Система автоматически закрывает многоугольник, при необходимости нарисовав линию от последней вершины к первой.
CRgn::CreatePolyPolygonRgn Инициализирует CRgn объект с областью, состоящей из ряда закрытых многоугольников. Многоугольники могут быть развязаны или могут перекрываться.
CRgn::CreateRectRgn Инициализирует CRgn объект с прямоугольной областью.
CRgn::CreateRectRgnIndirect Инициализирует CRgn объект с прямоугольной областью, определенной усечением RECT.
CRgn::CreateRoundRectRgn Инициализирует CRgn объект с прямоугольной областью с округленными углами.
CRgn::EqualRgn Проверяет два CRgn объекта, чтобы определить, эквивалентны ли они.
CRgn::FromHandle Возвращает указатель на CRgn объект при указании дескриптора в регионе Windows.
CRgn::GetRegionData Заполняет указанный буфер данными, описывающими заданный регион.
CRgn::GetRgnBox Извлекает координаты ограничивающего CRgn прямоугольника объекта.
CRgn::OffsetRgn CRgn Перемещает объект по указанным смещениям.
CRgn::P tInRegion Определяет, находится ли указанная точка в регионе.
CRgn::RectInRegion Определяет, находится ли любая часть указанного прямоугольника в границах региона.
CRgn::SetRectRgn CRgn Задает объект указанному прямоугольнику.

Открытые операторы

Имя Описание
CRgn::operator HRGN Возвращает дескриптор Windows, содержащийся в объекте CRgn .

Замечания

Область — это многоугольник или многоугольник в окне. Чтобы использовать регионы, используйте функции-члены класса CRgn с функциями обрезки, определенными как члены класса CDC.

Функции-члены создания, изменения и получения сведений CRgn об объекте региона, для которого они вызываются.

Дополнительные сведения об использовании CRgnсм. в разделе "Графические объекты".

Иерархия наследования

CObject

CGdiObject

CRgn

Требования

Заголовок: afxwin.h

CRgn::CombineRgn

Создает новый регион GDI путем объединения двух существующих регионов.

int CombineRgn(
    CRgn* pRgn1,
    CRgn* pRgn2,
    int nCombineMode);

Параметры

pRgn1
Определяет существующий регион.

pRgn2
Определяет существующий регион.

nCombineMode
Указывает операцию, выполняемую при объединении двух исходных регионов. Это может быть любое из следующих значений:

  • RGN_AND Использует перекрывающиеся области обоих регионов (пересечение).

  • RGN_COPY Создает копию региона 1 (идентифицируется pRgn1).

  • RGN_DIFF Создает регион, состоящий из областей 1 (идентифицируемых pRgn1), которые не являются частью региона 2 (идентифицируются pRgn2).

  • RGN_OR объединяет оба региона в целом (объединение).

  • RGN_XOR Объединяет оба региона, но удаляет перекрывающиеся области.

Возвращаемое значение

Указывает тип результирующего региона. Может иметь одно из следующих значений.

  • В новом регионе COMPLEXREGION есть перекрывающиеся границы.

  • ERROR No new region created.

  • Новый регион NULLREGION пуст.

  • В новом регионе SIMPLEREGION нет перекрывающихся границ.

Замечания

Регионы объединяются, как указано в nCombineMode.

Два указанных региона объединяются, а результирующий дескриптор региона хранится в объекте CRgn . Таким образом, любой регион, хранящийся в объекте CRgn , заменяется объединенным регионом.

Размер региона ограничен 32 767 на 32 767 логических единиц или 64 КБ памяти, в зависимости от того, что меньше.

Используйте CopyRgn , чтобы просто скопировать один регион в другой регион.

Пример

CRgn   rgnA, rgnB, rgnC;

VERIFY(rgnA.CreateRectRgn(50, 50, 150, 150));
VERIFY(rgnB.CreateRectRgn(100, 100, 200, 200));
VERIFY(rgnC.CreateRectRgn(0, 0, 50, 50));

int nCombineResult = rgnC.CombineRgn(&rgnA, &rgnB, RGN_OR);
ASSERT(nCombineResult != ERROR && nCombineResult != NULLREGION);

CBrush br1, br2, br3;
VERIFY(br1.CreateSolidBrush(RGB(255, 0, 0)));  // rgnA Red
VERIFY(pDC->FrameRgn(&rgnA, &br1, 2, 2));
VERIFY(br2.CreateSolidBrush(RGB(0, 255, 0)));  // rgnB Green
VERIFY(pDC->FrameRgn(&rgnB, &br2, 2, 2));
VERIFY(br3.CreateSolidBrush(RGB(0, 0, 255)));  // rgnC Blue
VERIFY(pDC->FrameRgn(&rgnC, &br3, 2, 2));

CRgn::CopyRgn

Копирует регион, определенный pRgnSrc в CRgn объект.

int CopyRgn(CRgn* pRgnSrc);

Параметры

pRgnSrc
Определяет существующий регион.

Возвращаемое значение

Указывает тип результирующего региона. Может иметь одно из следующих значений.

  • В новом регионе COMPLEXREGION есть перекрывающиеся границы.

  • ERROR No new region created.

  • Новый регион NULLREGION пуст.

  • В новом регионе SIMPLEREGION нет перекрывающихся границ.

Замечания

Новый регион заменяет регион, ранее хранящийся в объекте CRgn . Эта функция является особым случаем функции-члена CombineRgn .

Пример

См. пример для CRgn::CreateEllipticRgn.

CRgn::CreateEllipticRgn

Создает эллиптические области.

BOOL CreateEllipticRgn(
    int x1,
    int y1,
    int x2,
    int y2);

Параметры

x1
Задает логическую координату x левого верхнего угла ограничивающего прямоугольника многоточия.

y1
Задает логическую координату y левого верхнего угла ограничивающего прямоугольника многоточия.

x2
Задает логическую координату x правого нижнего угла ограничивающего прямоугольника многоточия.

y2
Задает логическую координату Y правого нижнего угла ограничивающего прямоугольника многоточия.

Возвращаемое значение

Ненулевое значение, если операция выполнена успешно; в противном случае — 0.

Замечания

Область определяется ограничивающим прямоугольником, заданным x1, y1, x2 и y2. Регион хранится в объекте CRgn .

Размер региона ограничен 32 767 на 32 767 логических единиц или 64 КБ памяти, в зависимости от того, что меньше.

Завершив использование региона, созданного с CreateEllipticRgn помощью функции, приложение должно выбрать регион из контекста устройства и использовать DeleteObject функцию для ее удаления.

Пример

CRgn   rgnA, rgnB, rgnC;

VERIFY(rgnA.CreateEllipticRgn(200, 100, 350, 250));
VERIFY(rgnB.CreateRectRgn(0, 0, 50, 50));
VERIFY(rgnB.CopyRgn(&rgnA));
int nOffsetResult = rgnB.OffsetRgn(-75, 75);
ASSERT(nOffsetResult != ERROR && nOffsetResult != NULLREGION);

VERIFY(rgnC.CreateRectRgn(0, 0, 1, 1));
int nCombineResult = rgnC.CombineRgn(&rgnA, &rgnB, RGN_AND);
ASSERT(nCombineResult != ERROR && nOffsetResult != NULLREGION);

CBrush brA, brB, brC;
VERIFY(brC.CreateHatchBrush(HS_FDIAGONAL, RGB(0, 0, 255))); // Blue
VERIFY(pDC->FillRgn(&rgnC, &brC));
VERIFY(brA.CreateSolidBrush(RGB(255, 0, 0)));  // rgnA Red
VERIFY(pDC->FrameRgn(&rgnA, &brA, 2, 2));
VERIFY(brB.CreateSolidBrush(RGB(0, 255, 0)));  // rgnB Green
VERIFY(pDC->FrameRgn(&rgnB, &brB, 2, 2));

CRgn::CreateEllipticRgnIndirect

Создает эллиптические области.

BOOL CreateEllipticRgnIndirect(LPCRECT lpRect);

Параметры

lpRect
Указывает на RECT структуру или CRect объект, содержащий логические координаты верхних и нижних правых углов ограничивающего прямоугольника многоточия.

Возвращаемое значение

Ненулевое значение, если операция выполнена успешно; в противном случае — 0.

Замечания

Регион определяется структурой или объектом, на который указывает lpRect , и хранится в объекте CRgn .

Размер региона ограничен 32 767 на 32 767 логических единиц или 64 КБ памяти, в зависимости от того, что меньше.

Завершив использование региона, созданного с CreateEllipticRgnIndirect помощью функции, приложение должно выбрать регион из контекста устройства и использовать DeleteObject функцию для ее удаления.

Пример

См. пример для CRgn::CreateRectRgnIndirect.

CRgn::CreateFromData

Создает регион из заданного региона и данных преобразования.

BOOL CreateFromData(
    const XFORM* lpXForm,
    int nCount,
    const RGNDATA* pRgnData);

Параметры

lpXForm
Указывает на структуру ata XFORM, которая определяет преобразование, выполняемое в регионе. Если этот указатель имеет значение NULL, используется преобразование удостоверения.

Ncount
Указывает количество байтов, на которые указывает pRgnData.

pRgnData
Указывает на структуру данных RGNDATA , содержащую данные региона.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Приложение может получить данные для региона, вызвав функцию CRgn::GetRegionData .

CRgn::CreateFromPath

Создает регион из пути, выбранного в заданном контексте устройства.

BOOL CreateFromPath(CDC* pDC);

Параметры

pDC
Определяет контекст устройства, содержащий закрытый путь.

Возвращаемое значение

Ненулевое значение, если функция выполнена успешно; в противном случае — 0.

Замечания

Контекст устройства, определяемый параметром PDC , должен содержать закрытый путь. После CreateFromPath преобразования пути в регион Windows отключает карта закрытый путь из контекста устройства.

CRgn::CreatePolygonRgn

Создает многоугольник.

BOOL CreatePolygonRgn(
    LPPOINT lpPoints,
    int nCount,
    int nMode);

Параметры

lpPoints
Указывает на массив POINT структур или массив CPoint объектов. Каждая структура задает координату x и координату y одной вершины многоугольника. Структура POINT имеет следующую форму:

typedef struct tagPOINT {
    int x;
    int y;
} POINT;

Ncount
Указывает количество POINT структур или CPoint объектов в массиве, на которые указывает lpPoints.

nMode
Задает режим заполнения для региона. Этот параметр может иметь значение ALTERNATE или WINDING.

Возвращаемое значение

Ненулевое значение, если операция выполнена успешно; в противном случае — 0.

Замечания

Система автоматически закрывает многоугольник, при необходимости нарисовав линию от последней вершины к первой. Результирующий регион хранится в объекте CRgn .

Размер региона ограничен 32 767 на 32 767 логических единиц или 64 КБ памяти, в зависимости от того, что меньше.

Если режим многоугольника является АЛЬТЕРНАТИВНЫМ, система заполняет область между нечетными и четными сторонами многоугольников на каждой линии сканирования. То есть система заполняет область между первой и второй стороной, между третьей и четвертой стороной и т. д.

Когда режим многоугольника заполняется, система использует направление, в котором рисуется рисунок, чтобы определить, следует ли заполнить область. Каждый сегмент линии в многоугольнике рисуется либо по часовой стрелке, либо в направлении счетчика. Всякий раз, когда мнимая линия, рисуемая из заключаемой области к внешней части фигуры, проходит через сегмент по часовой стрелке, число увеличивается. Когда линия проходит через сегмент линии счетчика с часовой стрелкой, количество уменьшается. Область заполняется, если число ненулевое, когда линия достигает за пределами фигуры.

После завершения работы приложения с помощью региона, созданного с CreatePolygonRgn помощью функции, он должен выбрать регион из контекста устройства и использовать DeleteObject функцию для ее удаления.

Пример

CRgn   rgnA, rgnB;

CPoint ptVertex[5];

ptVertex[0].x = 180;
ptVertex[0].y = 80;
ptVertex[1].x = 100;
ptVertex[1].y = 160;
ptVertex[2].x = 120;
ptVertex[2].y = 260;
ptVertex[3].x = 240;
ptVertex[3].y = 260;
ptVertex[4].x = 260;
ptVertex[4].y = 160;

VERIFY(rgnA.CreatePolygonRgn(ptVertex, 5, ALTERNATE));

CRect rectRgnBox;
int nRgnBoxResult = rgnA.GetRgnBox(&rectRgnBox);
ASSERT(nRgnBoxResult != ERROR && nRgnBoxResult != NULLREGION);

CBrush brA, brB;
VERIFY(brA.CreateSolidBrush(RGB(255, 0, 0)));  // rgnA Red
VERIFY(pDC->FrameRgn(&rgnA, &brA, 2, 2));
VERIFY(brB.CreateSolidBrush(RGB(0, 0, 255)));  // Blue
rectRgnBox.InflateRect(3, 3);
pDC->FrameRect(&rectRgnBox, &brB);

CRgn::CreatePolyPolygonRgn

Создает регион, состоящий из ряда закрытых многоугольников.

BOOL CreatePolyPolygonRgn(
    LPPOINT lpPoints,
    LPINT lpPolyCounts,
    int nCount,
    int nPolyFillMode);

Параметры

lpPoints
Указывает на массив структур или массив POINTCPoint объектов, определяющих вершины многоугольников. Каждый многоугольник должен быть явно закрыт, так как система не закрывает их автоматически. Многоугольники задаются последовательно. Структура POINT имеет следующую форму:

typedef struct tagPOINT {
    int x;
    int y;
} POINT;

lpPolyCounts
Указывает на массив целых чисел. Первое целое число указывает количество вершин в первом многоугольнике в массиве lpPoints , второе целое число указывает количество вершин во втором многоугольнике и т. д.

Ncount
Указывает общее число целых чисел в массиве lpPolyCounts .

nPolyFillMode
Задает режим заполнения многоугольников. Это значение может иметь значение ALTERNATE или WINDING.

Возвращаемое значение

Ненулевое значение, если операция выполнена успешно; в противном случае — 0.

Замечания

Результирующий регион хранится в объекте CRgn .

Многоугольники могут быть развязаны или могут перекрываться.

Размер региона ограничен 32 767 на 32 767 логических единиц или 64 КБ памяти, в зависимости от того, что меньше.

Если режим многоугольника является АЛЬТЕРНАТИВНЫМ, система заполняет область между нечетными и четными сторонами многоугольников на каждой линии сканирования. То есть система заполняет область между первой и второй стороной, между третьей и четвертой стороной и т. д.

Когда режим многоугольника заполняется, система использует направление, в котором рисуется рисунок, чтобы определить, следует ли заполнить область. Каждый сегмент линии в многоугольнике рисуется либо по часовой стрелке, либо в направлении счетчика. Всякий раз, когда мнимая линия, рисуемая из заключаемой области к внешней части фигуры, проходит через сегмент по часовой стрелке, число увеличивается. Когда линия проходит через сегмент линии счетчика с часовой стрелкой, количество уменьшается. Область заполняется, если число ненулевое, когда линия достигает за пределами фигуры.

После завершения работы приложения с помощью региона, созданного с CreatePolyPolygonRgn помощью функции, он должен выбрать регион из контекста устройства и использовать функцию-член CGDIObject::D eleteObject , чтобы удалить ее.

CRgn::CreateRectRgn

Создает прямоугольную область, хранящуюся в объекте CRgn .

BOOL CreateRectRgn(
    int x1,
    int y1,
    int x2,
    int y2);

Параметры

x1
Задает логическую координату x левого верхнего угла региона.

y1
Задает логическую координату Y верхнего левого угла региона.

x2
Задает логическую координату x правого нижнего угла региона.

y2
Задает логическую координату y в правом нижнем углу региона.

Возвращаемое значение

Ненулевое значение, если операция выполнена успешно; в противном случае — 0.

Замечания

Размер региона ограничен 32 767 на 32 767 логических единиц или 64 КБ памяти, в зависимости от того, что меньше.

Завершив использование региона, созданного CreateRectRgnприложением, следует использовать функцию-член CGDIObject::D eleteObject для удаления региона.

Пример

CRgn   rgn;

BOOL bSucceeded = rgn.CreateRectRgn(50, 20, 150, 120);
ASSERT(bSucceeded == TRUE);

Дополнительные примеры см. в разделе CRgn::CombineRgn.

CRgn::CreateRectRgnIndirect

Создает прямоугольную область, хранящуюся в объекте CRgn .

BOOL CreateRectRgnIndirect(LPCRECT lpRect);

Параметры

lpRect
Указывает на RECT структуру или CRect объект, содержащий логические координаты верхнего левого и нижнего правых углов региона. Структура RECT имеет следующую форму:

typedef struct tagRECT {
    int left;
    int top;
    int right;
    int bottom;
} RECT;

Возвращаемое значение

Ненулевое значение, если операция выполнена успешно; в противном случае — 0.

Замечания

Размер региона ограничен 32 767 на 32 767 логических единиц или 64 КБ памяти, в зависимости от того, что меньше.

Завершив использование региона, созданного CreateRectRgnIndirectприложением, следует использовать функцию-член CGDIObject::D eleteObject для удаления региона.

Пример

CRgn   rgnA, rgnB, rgnC;

CRect rectA(50, 50, 150, 150);
CRect rectB(100, 50, 200, 150);

VERIFY(rgnA.CreateRectRgnIndirect(&rectA));
VERIFY(rgnB.CreateEllipticRgnIndirect(&rectB));
VERIFY(rgnC.CreateRectRgn( 0, 0, 50, 50 ));

int nCombineResult = rgnC.CombineRgn( &rgnA, &rgnB, RGN_AND );
ASSERT( nCombineResult != ERROR && nCombineResult != NULLREGION );

CBrush brA, brB, brC;
VERIFY(brA.CreateSolidBrush( RGB(255, 0, 0) ));  
VERIFY(pDC->FrameRgn( &rgnA, &brA, 2, 2 ));      // rgnA Red

VERIFY(brB.CreateSolidBrush( RGB(0, 255, 0) ));  
VERIFY(pDC->FrameRgn( &rgnB, &brB, 2, 2 ));      // rgnB Green
VERIFY(brC.CreateSolidBrush( RGB(0, 0, 255) ));  // rgnC Blue
VERIFY(pDC->FrameRgn( &rgnC, &brC, 2, 2 ));

CRgn::CreateRoundRectRgn

Создает прямоугольную область с округленными углами, хранящимися в объекте CRgn .

BOOL CreateRoundRectRgn(
    int x1,
    int y1,
    int x2,
    int y2,
    int x3,
    int y3);

Параметры

x1
Задает логическую координату x левого верхнего угла региона.

y1
Задает логическую координату Y верхнего левого угла региона.

x2
Задает логическую координату x правого нижнего угла региона.

y2
Задает логическую координату y в правом нижнем углу региона.

x3
Задает ширину многоточия, используемой для создания округлых углов.

y3
Задает высоту многоточия, используемого для создания округлых углов.

Возвращаемое значение

Ненулевое значение, если операция выполнена успешно; в противном случае — 0.

Замечания

Размер региона ограничен 32 767 на 32 767 логических единиц или 64 КБ памяти, в зависимости от того, что меньше.

После завершения работы приложения с помощью региона, созданного с CreateRoundRectRgn помощью функции, он должен выбрать регион из контекста устройства и использовать функцию-член CGDIObject::D eleteObject , чтобы удалить ее.

Пример

CRgn   rgnA, rgnB, rgnC;

VERIFY(rgnA.CreateRoundRectRgn( 50, 50, 150, 150, 30, 30 ));
VERIFY(rgnB.CreateRoundRectRgn( 200, 75, 250, 125, 50, 50 ));
VERIFY(rgnC.CreateRectRgn( 0, 0, 50, 50 ));

int nCombineResult = rgnC.CombineRgn( &rgnA, &rgnB, RGN_OR );
ASSERT( nCombineResult != ERROR && nCombineResult != NULLREGION );

CBrush brA, brB, brC;
VERIFY(brA.CreateSolidBrush( RGB(255, 0, 0) ));  
VERIFY(pDC->FillRgn( &rgnA, &brA));      // rgnA Red Filled

VERIFY(brB.CreateSolidBrush( RGB(0, 255, 0) ));  
VERIFY(pDC->FillRgn( &rgnB, &brB));      // rgnB Green Filled
VERIFY(brC.CreateSolidBrush( RGB(0, 0, 255) ));  // rgnC Blue
VERIFY(pDC->FrameRgn( &rgnC, &brC, 2, 2 ));

CRgn::CRgn

Формирует объект CRgn.

CRgn();

Замечания

Элемент m_hObject данных не содержит допустимый регион GDI Windows, пока объект не инициализирован с помощью одной или нескольких других CRgn функций-членов.

Пример

См. пример CRgn ::CreateRoundRectRgn.

CRgn::EqualRgn

Определяет, эквивалентен ли данный регион региону, хранящейся в объекте CRgn .

BOOL EqualRgn(CRgn* pRgn) const;

Параметры

pRgn
Определяет регион.

Возвращаемое значение

Ненулевое значение, если два региона эквивалентны; в противном случае — 0.

Пример

CRgn   rgnA, rgnB;

VERIFY(rgnA.CreateEllipticRgn(200, 100, 350, 250));
VERIFY(rgnB.CreateRectRgn(0, 0, 50, 50));
VERIFY(rgnB.CopyRgn(&rgnA));
int nOffsetResult = rgnB.OffsetRgn(-75, 75);
ASSERT(nOffsetResult != ERROR && nOffsetResult != NULLREGION);
ASSERT(FALSE == rgnB.EqualRgn(&rgnA));

CRgn::FromHandle

Возвращает указатель на CRgn объект при указании дескриптора в регионе Windows.

static CRgn* PASCAL FromHandle(HRGN hRgn);

Параметры

hRgn
Указывает дескриптор в регионе Windows.

Возвращаемое значение

Указатель на объект CRgn. Если функция не выполнена успешно, возвращаемое значение равно NULL.

Замечания

CRgn Если объект еще не присоединен к дескрипторуCRgn, создается и присоединяется временный объект. Этот временный объект действителен только в следующий раз, когда приложение имеет время простоя CRgn в цикле событий, в то время как все временные графические объекты удаляются. Другой способ сказать, что временный объект действителен только во время обработки одного сообщения окна.

CRgn::GetRegionData

Заполняет указанный буфер данными, описывающими регион.

int GetRegionData(
    LPRGNDATA lpRgnData,
    int nCount) const;

Параметры

lpRgnData
Указывает на структуру данных RGNDATA , которая получает информацию. Если этот параметр имеет значение NULL, возвращаемое значение содержит количество байтов, необходимых для данных региона.

Ncount
Задает размер буфера lpRgnData в байтах.

Возвращаемое значение

Если функция успешно выполнена и nCount указывает достаточное количество байтов, возвращаемое значение всегда равно nCount. Если функция завершается ошибкой, или если nCount указывает меньше достаточного количества байтов, возвращаемое значение равно 0 (ошибка).

Замечания

Эти данные включают измерения прямоугольников, составляющих область. Эта функция используется в сочетании с функцией CRgn::CreateFromData .

CRgn::GetRgnBox

Извлекает координаты ограничивающего CRgn прямоугольника объекта.

int GetRgnBox(LPRECT lpRect) const;

Параметры

lpRect
Указывает на RECT структуру или CRect объект для получения координат ограничивающего прямоугольника. Структура RECT имеет следующую форму:

typedef struct tagRECT {

int left;

int top;

int right;

int bottom;

} RECT;

Возвращаемое значение

Указывает тип региона. В качестве такой точки может выступать любой из следующих вариантов:

  • Регион COMPLEXREGION имеет перекрывающиеся границы.

  • Область NULLREGION пуста.

  • Объект ERROR CRgn не указывает допустимый регион.

  • Регион SIMPLEREGION не имеет перекрывающихся границ.

Пример

См. пример для CRgn::CreatePolygonRgn.

CRgn::OffsetRgn

Перемещает регион, хранящийся в объекте CRgn , по указанным смещениям.

int OffsetRgn(
    int x,
    int y);

int OffsetRgn(POINT point);

Параметры

x
Указывает количество единиц для перемещения влево или вправо.

y
Указывает количество единиц для перемещения вверх или вниз.

point
Координата x точки указывает количество единиц для перемещения влево или вправо. Координата y точки указывает количество единиц для перемещения вверх или вниз. Параметр точки может быть структурой POINTCPoint или объектом.

Возвращаемое значение

Тип нового региона. Это может быть любое из следующих значений:

  • Регион COMPLEXREGION имеет перекрывающиеся границы.

  • Недопустимый дескриптор региона ERROR.

  • Область NULLREGION пуста.

  • Регион SIMPLEREGION не имеет перекрывающихся границ.

Замечания

Функция перемещает единицы x региона вдоль оси x и единиц y вдоль оси y .

Значения координат региона должны быть меньше или равны 32 767 и больше или равно -32 768. Параметры x и y должны быть тщательно выбраны, чтобы предотвратить недопустимые координаты региона.

Пример

См. пример для CRgn::CreateEllipticRgn.

CRgn::operator HRGN

Используйте этот оператор для получения присоединенного дескриптора CRgn GDI Windows объекта.

operator HRGN() const;

Возвращаемое значение

В случае успешного выполнения дескриптор объекта GDI Windows, представленного CRgn объектом; в противном случае — ЗНАЧЕНИЕ NULL.

Замечания

Этот оператор является оператором приведения, который поддерживает прямое использование объекта HRGN.

Дополнительные сведения об использовании графических объектов см. в статье "Графические объекты " в пакете SDK для Windows.

CRgn::P tInRegion

Проверяет, находится ли точка, заданная x и y , в регионе, хранящейся в объекте CRgn .

BOOL PtInRegion(
    int x,
    int y) const;

BOOL PtInRegion(POINT point) const;

Параметры

x
Задает логическую координату x точки для тестирования.

y
Указывает логическую координату точки для тестирования.

point
Координаты x-и y точки указывают координаты x-и y точки для проверки значения. Параметр точки может быть структурой POINTCPoint или объектом.

Возвращаемое значение

Ненулевое значение, если точка находится в регионе; в противном случае — 0.

CRgn::RectInRegion

Определяет, находится ли любая часть прямоугольника, указанная lpRect , находится в границах региона, хранящегося в объекте CRgn .

BOOL RectInRegion(LPCRECT lpRect) const;

Параметры

lpRect
Указывает на структуру RECT или CRect объект. Структура RECT имеет следующую форму:

typedef struct tagRECT {
    int left;
    int top;
    int right;
    int bottom;
} RECT;

Возвращаемое значение

Ненулевое значение, если какая-либо часть указанного прямоугольника находится в границах региона; в противном случае — 0.

CRgn::SetRectRgn

Создает прямоугольную область.

void SetRectRgn(
    int x1,
    int y1,
    int x2,
    int y2);

void SetRectRgn(LPCRECT lpRect);

Параметры

x1
Задает координату x левого верхнего угла прямоугольной области.

y1
Задает координату y левого верхнего угла прямоугольной области.

x2
Задает координату x правого нижнего угла прямоугольной области.

y2
Задает координату y правого нижнего угла прямоугольной области.

lpRect
Задает прямоугольную область. Может быть указателем на RECT структуру или CRect объект.

Замечания

В отличие от CreateRectRgn, однако он не выделяет дополнительную память из локальной кучи приложений Windows. Вместо этого он использует пространство, выделенное для региона, хранящегося в объекте CRgn . Это означает, что CRgn объект уже должен быть инициализирован с допустимым регионом Windows перед вызовом SetRectRgn. Точки, заданные x1, y1, x2 и y2, указывают минимальный размер выделенного пространства.

Используйте эту функцию вместо CreateRectRgn функции-члена, чтобы избежать вызовов локального диспетчера памяти.

См. также

Класс CWnd
Диаграмма иерархии