Delen via


CRgn-klasse

Hiermee wordt een GDI-regio (Windows Graphics Device Interface) ingekapseld.

Syntaxis

class CRgn : public CGdiObject

Leden

Openbare constructors

Naam Beschrijving
CRgn::CRgn Maakt een CRgn-object.

Openbare methoden

Naam Beschrijving
CRgn::CombineRgn Hiermee stelt u een CRgn object zo in dat het gelijk is aan de samenvoeging van twee opgegeven CRgn objecten.
CRgn::CopyRgn Hiermee stelt u een CRgn object zo in dat het een kopie van een opgegeven CRgn object is.
CRgn::CreateEllipticRgn Initialiseert een CRgn object met een elliptische regio.
CRgn::CreateEllipticRgnIndirect Initialiseert een CRgn object met een elliptische regio die is gedefinieerd door een RECT-structuur .
CRgn::CreateFromData Hiermee maakt u een regio op basis van de opgegeven regio en transformatiegegevens.
CRgn::CreateFromPath Hiermee maakt u een regio op basis van het pad dat is geselecteerd in de opgegeven apparaatcontext.
CRgn::CreatePolygonRgn Initialiseert een CRgn object met een veelhoekige regio. Het systeem sluit indien nodig de veelhoek automatisch door een lijn van het laatste hoekpunt naar het eerste hoekpunt te tekenen.
CRgn::CreatePolyPolygonRgn Initialiseert een CRgn object met een regio die bestaat uit een reeks gesloten veelhoeken. De veelhoeken zijn mogelijk niet aaneengesloten of overlappen elkaar.
CRgn::CreateRectRgn Initialiseert een CRgn object met een rechthoekig gebied.
CRgn::CreateRectRgnIndirect Initialiseert een CRgn object met een rechthoekig gebied dat is gedefinieerd door een RECT-structuur .
CRgn::CreateRoundRectRgn Initialiseert een CRgn object met een rechthoekig gebied met afgeronde hoeken.
CRgn::EqualRgn Controleert twee CRgn objecten om te bepalen of ze gelijkwaardig zijn.
CRgn::FromHandle Retourneert een aanwijzer naar een CRgn object wanneer een ingang wordt gegeven aan een Windows-regio.
CRgn::GetRegionData Vult de opgegeven buffer met gegevens die de opgegeven regio beschrijven.
CRgn::GetRgnBox Haalt de coördinaten van de begrenzingsrechthoek van een CRgn object op.
CRgn::OffsetRgn Hiermee verplaatst u een CRgn object door de opgegeven offsets.
CRgn::P tInRegion Bepaalt of een opgegeven punt zich in de regio bevindt.
CRgn::RectInRegion Bepaalt of een deel van een opgegeven rechthoek binnen de grenzen van de regio valt.
CRgn::SetRectRgn Hiermee stelt u het CRgn object in op het opgegeven rechthoekige gebied.

Openbare operators

Naam Beschrijving
CRgn::operator HRGN Retourneert de Windows-ingang in het CRgn object.

Opmerkingen

Een regio is een elliptisch of veelhoekig gebied binnen een venster. Als u regio's wilt gebruiken, gebruikt u de lidfuncties van de klasse CRgn met de knipfuncties die zijn gedefinieerd als leden van de klasse CDC.

De lidfuncties van het maken, wijzigen en ophalen van CRgn informatie over het regioobject waarvoor ze worden aangeroepen.

Zie CRgn voor meer informatie over het gebruik.

Overnamehiërarchie

CObject-

CGdiObject

CRgn

Behoeften

koptekst: afxwin.h

CRgn::CombineRgn

Hiermee maakt u een nieuwe GDI-regio door twee bestaande regio's te combineren.

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

Parameterwaarden

pRgn1
Identificeert een bestaande regio.

pRgn2
Identificeert een bestaande regio.

nCombineMode
Hiermee geeft u de bewerking die moet worden uitgevoerd bij het combineren van de twee bronregio's. Dit kan een van de volgende waarden zijn:

  • RGN_AND Gebruikt overlappende gebieden van beide regio's (snijpunt).

  • RGN_COPY Maakt een kopie van regio 1 (aangeduid met pRgn1).

  • RGN_DIFF Maakt een regio die bestaat uit de gebieden van regio 1 (geïdentificeerd door pRgn1) die geen deel uitmaken van regio 2 (geïdentificeerd door pRgn2).

  • RGN_OR Combineert beide regio's in hun geheel (samenvoeging).

  • RGN_XOR Combineert beide regio's, maar verwijdert overlappende gebieden.

Retourwaarde

Hiermee geeft u het type van de resulterende regio. Dit kan een van de volgende waarden zijn:

  • COMPLEXREGION Nieuwe regio heeft overlappende randen.

  • FOUT: er is geen nieuwe regio gemaakt.

  • De nieuwe regio NULLREGION is leeg.

  • SIMPLEREGION New region heeft geen overlappende randen.

Opmerkingen

De regio's worden gecombineerd zoals opgegeven door nCombineMode.

De twee opgegeven regio's worden gecombineerd en de resulterende regiogreep wordt opgeslagen in het CRgn object. Dus, elke regio die in het CRgn object wordt opgeslagen, wordt vervangen door de gecombineerde regio.

De grootte van een regio is beperkt tot 32.767 met 32.767 logische eenheden of 64K geheugen, afhankelijk van wat kleiner is.

Gebruik CopyRgn om een regio naar een andere regio te kopiëren.

Voorbeeld

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

Kopieert de regio die is gedefinieerd door pRgnSrc naar het CRgn object.

int CopyRgn(CRgn* pRgnSrc);

Parameterwaarden

pRgnSrc
Identificeert een bestaande regio.

Retourwaarde

Hiermee geeft u het type van de resulterende regio. Dit kan een van de volgende waarden zijn:

  • COMPLEXREGION Nieuwe regio heeft overlappende randen.

  • FOUT: er is geen nieuwe regio gemaakt.

  • De nieuwe regio NULLREGION is leeg.

  • SIMPLEREGION New region heeft geen overlappende randen.

Opmerkingen

De nieuwe regio vervangt de regio die voorheen in het CRgn object is opgeslagen. Deze functie is een speciaal geval van de functie CombineRgn-lid .

Voorbeeld

Zie het voorbeeld voor CRgn::CreateEllipticRgn.

CRgn::CreateEllipticRgn

Hiermee maakt u een elliptische regio.

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

Parameterwaarden

x1
Hiermee geeft u de logische x-coördinaat van de linkerbovenhoek van de begrenzingsrechthoek van het beletselteken.

y1
Hiermee geeft u de logische y-coördinaat van de linkerbovenhoek van de begrenzingsrechthoek van het beletselteken.

x2
Hiermee geeft u de logische x-coördinaat van de rechterbenedenhoek van de begrenzingsrechthoek van het beletselteken.

y2
Hiermee geeft u de logische y-coördinaat van de rechterbenedenhoek van de begrenzingsrechthoek van het beletselteken.

Retourwaarde

Niet-nul als de bewerking is geslaagd; anders 0.

Opmerkingen

De regio wordt gedefinieerd door de begrenzingsrechthoek die is opgegeven door x1, y1, x2 en y2. De regio wordt opgeslagen in het CRgn object.

De grootte van een regio is beperkt tot 32.767 met 32.767 logische eenheden of 64K geheugen, afhankelijk van wat kleiner is.

Wanneer de toepassing klaar is met het gebruik van een regio die met de CreateEllipticRgn functie is gemaakt, moet een toepassing de regio buiten de apparaatcontext selecteren en de functie gebruiken om deze DeleteObject te verwijderen.

Voorbeeld

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

Hiermee maakt u een elliptische regio.

BOOL CreateEllipticRgnIndirect(LPCRECT lpRect);

Parameterwaarden

lpRect-
Verwijst naar een RECT structuur of een CRect object dat de logische coördinaten bevat van de linkerbovenhoek en de rechterbenedenhoek van de begrenzingsrechthoek van het beletselteken.

Retourwaarde

Niet-nul als de bewerking is geslaagd; anders 0.

Opmerkingen

De regio wordt gedefinieerd door de structuur of het object waarnaar wordt verwezen door lpRect en wordt opgeslagen in het CRgn object.

De grootte van een regio is beperkt tot 32.767 met 32.767 logische eenheden of 64K geheugen, afhankelijk van wat kleiner is.

Wanneer de toepassing klaar is met het gebruik van een regio die met de CreateEllipticRgnIndirect functie is gemaakt, moet een toepassing de regio buiten de apparaatcontext selecteren en de functie gebruiken om deze DeleteObject te verwijderen.

Voorbeeld

Zie het voorbeeld voor CRgn::CreateRectRgnIndirect.

CRgn::CreateFromData

Hiermee maakt u een regio op basis van de opgegeven regio en transformatiegegevens.

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

Parameterwaarden

lpXForm
Verwijst naar een XFORM-gegevensstructuur die de transformatie definieert die moet worden uitgevoerd op de regio. Als deze aanwijzer NULL is, wordt de identiteitstransformatie gebruikt.

nCount
Hiermee geeft u het aantal bytes dat wordt verwezen door pRgnData.

pRgnData
Verwijst naar een RGNDATA-gegevensstructuur die de regiogegevens bevat.

Retourwaarde

Niet-nul als de functie is geslaagd; anders 0.

Opmerkingen

Een toepassing kan gegevens voor een regio ophalen door de functie aan te CRgn::GetRegionData roepen.

CRgn::CreateFromPath

Hiermee maakt u een regio op basis van het pad dat is geselecteerd in de opgegeven apparaatcontext.

BOOL CreateFromPath(CDC* pDC);

Parameterwaarden

pDC
Identificeert een apparaatcontext die een gesloten pad bevat.

Retourwaarde

Niet-nul als de functie is geslaagd; anders 0.

Opmerkingen

De apparaatcontext die wordt geïdentificeerd door de pDC-parameter moet een gesloten pad bevatten. Nadat CreateFromPath een pad is geconverteerd naar een regio, wordt het gesloten pad uit de apparaatcontext verwijderd.

CRgn::CreatePolygonRgn

Hiermee maakt u een veelhoekige regio.

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

Parameterwaarden

lpPoints
Verwijst naar een matrix met POINT structuren of een matrix met CPoint objecten. Elke structuur specificeert de x-coördinaat en y-coördinaat van één hoekpunt van de veelhoek. De POINT structuur heeft de volgende vorm:

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

nCount
Hiermee geeft u het aantal POINT structuren of CPoint objecten in de matrix die naar wordt verwezen door lpPoints.

nMode
Hiermee geeft u de vulmodus voor de regio. Deze parameter kan ALTERNATE of WIKKELING zijn.

Retourwaarde

Niet-nul als de bewerking is geslaagd; anders 0.

Opmerkingen

Het systeem sluit indien nodig de veelhoek automatisch door een lijn van het laatste hoekpunt naar het eerste hoekpunt te tekenen. De resulterende regio wordt opgeslagen in het CRgn object.

De grootte van een regio is beperkt tot 32.767 met 32.767 logische eenheden of 64K geheugen, afhankelijk van wat kleiner is.

Wanneer de polygoonvullende modus ALTERNATIEF is, vult het systeem het gebied tussen oneven en even genummerde veelhoekzijden op elke scanlijn. Dat wil gezegd, het systeem vult het gebied tussen de eerste en tweede zijde, tussen de derde en vierde kant, enzovoort.

Wanneer de veelhoekvullingsmodus WINDING is, gebruikt het systeem de richting waarin een afbeelding is getekend om te bepalen of een gebied moet worden gevuld. Elk lijnsegment in een veelhoek wordt getekend in een rechtsom of rechtsom. Wanneer een imaginaire lijn die van een ingesloten vlak naar de buitenkant van een figuur wordt getrokken, door een klokgewijs lijnsegment loopt, wordt een telling verhoogd. Wanneer de lijn een lijnsegment tegen de klok doorloopt, wordt het aantal afgebroken. Het gebied wordt opgevuld als het aantal niet-nul is wanneer de lijn de buitenzijde van de afbeelding bereikt.

Wanneer een toepassing klaar is met het gebruik van een regio die is gemaakt met de CreatePolygonRgn functie, moet deze de regio buiten de apparaatcontext selecteren en de functie gebruiken om deze DeleteObject te verwijderen.

Voorbeeld

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

Hiermee maakt u een regio die bestaat uit een reeks gesloten veelhoeken.

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

Parameterwaarden

lpPoints
Verwijst naar een matrix met POINT structuren of een matrix met CPoint objecten die de hoekpunten van de veelhoeken definieert. Elke veelhoek moet expliciet worden gesloten omdat het systeem ze niet automatisch sluit. De veelhoeken worden opeenvolgend opgegeven. De POINT structuur heeft de volgende vorm:

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

lpPolyCounts
Verwijst naar een matrix met gehele getallen. Het eerste gehele getal geeft het aantal hoekpunten in de eerste veelhoek in de lpPoints-matrix op, het tweede gehele getal geeft het aantal hoekpunten in de tweede veelhoek, enzovoort.

nCount
Hiermee geeft u het totale aantal gehele getallen in de matrix lpPolyCounts op.

nPolyFillMode
Hiermee geeft u de polygoonvullende modus. Deze waarde kan ALTERNATIEF of WIKKELING zijn.

Retourwaarde

Niet-nul als de bewerking is geslaagd; anders 0.

Opmerkingen

De resulterende regio wordt opgeslagen in het CRgn object.

De veelhoeken zijn mogelijk niet aaneengesloten of overlappen elkaar.

De grootte van een regio is beperkt tot 32.767 met 32.767 logische eenheden of 64K geheugen, afhankelijk van wat kleiner is.

Wanneer de polygoonvullende modus ALTERNATIEF is, vult het systeem het gebied tussen oneven en even genummerde veelhoekzijden op elke scanlijn. Dat wil gezegd, het systeem vult het gebied tussen de eerste en tweede zijde, tussen de derde en vierde kant, enzovoort.

Wanneer de veelhoekvullingsmodus WINDING is, gebruikt het systeem de richting waarin een afbeelding is getekend om te bepalen of een gebied moet worden gevuld. Elk lijnsegment in een veelhoek wordt getekend in een rechtsom of rechtsom. Wanneer een imaginaire lijn die van een ingesloten vlak naar de buitenkant van een figuur wordt getrokken, door een klokgewijs lijnsegment loopt, wordt een telling verhoogd. Wanneer de lijn een lijnsegment tegen de klok doorloopt, wordt het aantal afgebroken. Het gebied wordt opgevuld als het aantal niet-nul is wanneer de lijn de buitenzijde van de afbeelding bereikt.

Wanneer een toepassing klaar is met het gebruik van een regio die is gemaakt met de CreatePolyPolygonRgn functie, moet deze de regio buiten de apparaatcontext selecteren en de functie CGDIObject::D eleteObject-lid gebruiken om deze te verwijderen.

CRgn::CreateRectRgn

Hiermee maakt u een rechthoekig gebied dat is opgeslagen in het CRgn object.

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

Parameterwaarden

x1
Hiermee geeft u de logische x-coördinaat van de linkerbovenhoek van de regio.

y1
Hiermee geeft u de logische y-coördinaat van de linkerbovenhoek van de regio.

x2
Hiermee geeft u de logische x-coördinaat van de rechterbenedenhoek van de regio.

y2
Hiermee geeft u de logische y-coördinaat van de rechterbenedenhoek van de regio.

Retourwaarde

Niet-nul als de bewerking is geslaagd; anders 0.

Opmerkingen

De grootte van een regio is beperkt tot 32.767 met 32.767 logische eenheden of 64K geheugen, afhankelijk van wat kleiner is.

Wanneer deze is voltooid met een regio die is gemaakt door CreateRectRgn, moet een toepassing de functie CGDIObject::D eleteObject-lid gebruiken om de regio te verwijderen.

Voorbeeld

CRgn   rgn;

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

Zie CRgn::CombineRgn voor een extra voorbeeld.

CRgn::CreateRectRgnIndirect

Hiermee maakt u een rechthoekig gebied dat is opgeslagen in het CRgn object.

BOOL CreateRectRgnIndirect(LPCRECT lpRect);

Parameterwaarden

lpRect-
Verwijst naar een RECT structuur of CRect object dat de logische coördinaten van de linkerbovenhoek en de rechterbenedenhoek van het gebied bevat. De RECT structuur heeft de volgende vorm:

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

Retourwaarde

Niet-nul als de bewerking is geslaagd; anders 0.

Opmerkingen

De grootte van een regio is beperkt tot 32.767 met 32.767 logische eenheden of 64K geheugen, afhankelijk van wat kleiner is.

Wanneer deze is voltooid met een regio die is gemaakt door CreateRectRgnIndirect, moet een toepassing de functie CGDIObject::D eleteObject-lid gebruiken om de regio te verwijderen.

Voorbeeld

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

Hiermee maakt u een rechthoekig gebied met afgeronde hoeken die zijn opgeslagen in het CRgn object.

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

Parameterwaarden

x1
Hiermee geeft u de logische x-coördinaat van de linkerbovenhoek van de regio.

y1
Hiermee geeft u de logische y-coördinaat van de linkerbovenhoek van de regio.

x2
Hiermee geeft u de logische x-coördinaat van de rechterbenedenhoek van de regio.

y2
Hiermee geeft u de logische y-coördinaat van de rechterbenedenhoek van de regio.

x3
Hiermee geeft u de breedte van het beletselteken dat wordt gebruikt om de afgeronde hoeken te maken.

y3
Hiermee geeft u de hoogte van het beletselteken dat wordt gebruikt om de afgeronde hoeken te maken.

Retourwaarde

Niet-nul als de bewerking is geslaagd; anders 0.

Opmerkingen

De grootte van een regio is beperkt tot 32.767 met 32.767 logische eenheden of 64K geheugen, afhankelijk van wat kleiner is.

Wanneer een toepassing klaar is met het gebruik van een regio die is gemaakt met de CreateRoundRectRgn functie, moet deze de regio buiten de apparaatcontext selecteren en de functie CGDIObject::D eleteObject-lid gebruiken om deze te verwijderen.

Voorbeeld

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

Maakt een CRgn-object.

CRgn();

Opmerkingen

Het m_hObject gegevenslid bevat geen geldige Windows GDI-regio totdat het object is geïnitialiseerd met een of meer van de andere CRgn lidfuncties.

Voorbeeld

Zie het voorbeeld voor CRgn::CreateRoundRectRgn.

CRgn::EqualRgn

Bepaalt of de opgegeven regio gelijk is aan de regio die is opgeslagen in het CRgn object.

BOOL EqualRgn(CRgn* pRgn) const;

Parameterwaarden

pRgn
Identificeert een regio.

Retourwaarde

Niet-nul als de twee regio's gelijkwaardig zijn; anders 0.

Voorbeeld

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

Retourneert een aanwijzer naar een CRgn object wanneer een ingang wordt gegeven aan een Windows-regio.

static CRgn* PASCAL FromHandle(HRGN hRgn);

Parameterwaarden

hRgn
Hiermee geeft u een ingang naar een Windows-regio.

Retourwaarde

Een aanwijzer naar een CRgn object. Als de functie niet is geslaagd, is de retourwaarde NULL.

Opmerkingen

Als er CRgn nog geen object aan de ingang is gekoppeld, wordt er een tijdelijk CRgn object gemaakt en gekoppeld. Dit tijdelijke CRgn object is alleen geldig tot de volgende keer dat de toepassing inactief is in de gebeurtenislus, waarna alle tijdelijke grafische objecten worden verwijderd. Een andere manier om dit te zeggen is dat het tijdelijke object alleen geldig is tijdens de verwerking van één vensterbericht.

CRgn::GetRegionData

Vult de opgegeven buffer met gegevens die de regio beschrijven.

int GetRegionData(
    LPRGNDATA lpRgnData,
    int nCount) const;

Parameterwaarden

lpRgnData
Verwijst naar een RGNDATA-gegevensstructuur die de informatie ontvangt. Als deze parameter NULL is, bevat de retourwaarde het aantal bytes dat nodig is voor de regiogegevens.

nCount
Hiermee geeft u de grootte, in bytes, van de lpRgnData-buffer .

Retourwaarde

Als de functie slaagt en nCount een voldoende aantal bytes aangeeft, is de retourwaarde altijd nCount. Als de functie mislukt of als nCount minder dan voldoende bytes aangeeft, is de retourwaarde 0 (fout).

Opmerkingen

Deze gegevens bevatten de afmetingen van de rechthoeken waaruit de regio bestaat. Deze functie wordt gebruikt in combinatie met de CRgn::CreateFromData functie.

CRgn::GetRgnBox

Haalt de coördinaten van de begrenzingsrechthoek van het CRgn object op.

int GetRgnBox(LPRECT lpRect) const;

Parameterwaarden

lpRect-
Verwijst naar een RECT structuur of CRect object om de coördinaten van de begrenzingsrechthoek te ontvangen. De RECT structuur heeft de volgende vorm:

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

Retourwaarde

Hiermee geeft u het type regio op. Dit kan een van de volgende waarden zijn:

  • COMPLEXREGION-regio heeft overlappende randen.

  • NULLREGION-regio is leeg.

  • ERROR-object CRgn geeft geen geldige regio op.

  • SIMPLEREGION-regio heeft geen overlappende randen.

Voorbeeld

Zie het voorbeeld voor CRgn::CreatePolygonRgn.

CRgn::OffsetRgn

Hiermee verplaatst u de regio die is opgeslagen in het CRgn object door de opgegeven offsets.

int OffsetRgn(
    int x,
    int y);

int OffsetRgn(POINT point);

Parameterwaarden

x
Hiermee geeft u het aantal eenheden dat naar links of rechts moet worden verplaatst.

y
Hiermee geeft u het aantal eenheden op dat omhoog of omlaag moet worden verplaatst.

punt
De x-coördinaat van het punt geeft het aantal eenheden aan dat naar links of rechts moet worden verplaatst. De y-coördinaat van punt geeft het aantal eenheden op dat omhoog of omlaag moet worden verplaatst. De puntparameter kan een POINT structuur of een CPoint object zijn.

Retourwaarde

Het type van de nieuwe regio. Dit kan een van de volgende waarden zijn:

  • COMPLEXREGION-regio heeft overlappende randen.

  • Foutgebiedgreep is ongeldig.

  • NULLREGION-regio is leeg.

  • SIMPLEREGION-regio heeft geen overlappende randen.

Opmerkingen

De functie verplaatst de regio x-eenheden langs de x-as en y-eenheden langs de y-as.

De coördinaatwaarden van een regio moeten kleiner dan of gelijk zijn aan 32.767 en groter dan of gelijk aan -32.768. De x - en y-parameters moeten zorgvuldig worden gekozen om ongeldige regiocoördinaten te voorkomen.

Voorbeeld

Zie het voorbeeld voor CRgn::CreateEllipticRgn.

CRgn::operator HRGN

Gebruik deze operator om de gekoppelde Windows GDI-ingang van het CRgn object op te halen.

operator HRGN() const;

Retourwaarde

Als dit lukt, wordt een ingang naar het Windows GDI-object weergegeven door het CRgn object; anders NULL.

Opmerkingen

Deze operator is een cast-operator die direct gebruik van een HRGN-object ondersteunt.

Zie het artikel Grafische objecten in de Windows SDK voor meer informatie over het gebruik van grafische objecten.

CRgn::P tInRegion

Controleert of het punt dat is opgegeven door x en y zich in de regio bevindt die in het CRgn object is opgeslagen.

BOOL PtInRegion(
    int x,
    int y) const;

BOOL PtInRegion(POINT point) const;

Parameterwaarden

x
Hiermee geeft u de logische x-coördinaat van het punt te testen.

y
Hiermee geeft u de logische y-coördinaat van het punt te testen.

punt
De x- en y-coördinaten van punt geven de x- en y-coördinaten van het punt op om de waarde van het punt te testen. De puntparameter kan een POINT structuur of een CPoint object zijn.

Retourwaarde

Niet-nul als het punt zich in de regio bevindt; anders 0.

CRgn::RectInRegion

Bepaalt of een deel van de rechthoek die is opgegeven door lpRect zich binnen de grenzen van de regio bevindt die in het CRgn object is opgeslagen.

BOOL RectInRegion(LPCRECT lpRect) const;

Parameterwaarden

lpRect-
Verwijst naar een RECT structuur of CRect object. De RECT structuur heeft de volgende vorm:

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

Retourwaarde

Niet-nul als een deel van de opgegeven rechthoek binnen de grenzen van het gebied ligt; anders 0.

CRgn::SetRectRgn

Hiermee maakt u een rechthoekig gebied.

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

void SetRectRgn(LPCRECT lpRect);

Parameterwaarden

x1
Hiermee geeft u de x-coördinaat van de linkerbovenhoek van het rechthoekige gebied.

y1
Hiermee geeft u de y-coördinaat van de linkerbovenhoek van het rechthoekige gebied.

x2
Hiermee geeft u de x-coördinaat van de rechterbenedenhoek van het rechthoekige gebied.

y2
Hiermee geeft u de y-coördinaat van de rechterbenedenhoek van het rechthoekige gebied.

lpRect-
Hiermee geeft u de rechthoekige regio. Kan een aanwijzer naar een RECT structuur of een CRect object zijn.

Opmerkingen

In tegenstelling tot CreateRectRgn wijst het echter geen extra geheugen toe vanuit de lokale Windows-toepassing heap. In plaats daarvan wordt de ruimte gebruikt die is toegewezen voor de regio die is opgeslagen in het CRgn object. Dit betekent dat het CRgn object al moet zijn geïnitialiseerd met een geldige Windows-regio voordat u aanroept SetRectRgn. De punten die worden gegeven door x1, y1, x2 en y2 , geven de minimale grootte van de toegewezen ruimte op.

Gebruik deze functie in plaats van de CreateRectRgn lidfunctie om aanroepen naar de lokale geheugenbeheerder te voorkomen.

Zie ook

CWnd-klasse
Hiërarchiegrafiek