Bagikan melalui


Kelas CRgn

Merangkum wilayah antarmuka perangkat grafis (GDI) Windows.

Sintaks

class CRgn : public CGdiObject

Anggota

Konstruktor Publik

Nama Deskripsi
CRgn::CRgn Membuat CRgn objek.

Metode Publik

Nama Deskripsi
CRgn::CombineRgn CRgn Mengatur objek sehingga setara dengan penyatuan dua objek yang ditentukanCRgn.
CRgn::CopyRgn CRgn Mengatur objek sehingga merupakan salinan objek tertentuCRgn.
CRgn::CreateEllipticRgn Menginisialisasi CRgn objek dengan wilayah elips.
CRgn::CreateEllipticRgnIndirect Menginisialisasi CRgn objek dengan wilayah elips yang ditentukan oleh struktur RECT .
CRgn::CreateFromData Membuat wilayah dari wilayah tertentu dan data transformasi.
CRgn::CreateFromPath Membuat wilayah dari jalur yang dipilih ke dalam konteks perangkat tertentu.
CRgn::CreatePolygonRgn Menginisialisasi CRgn objek dengan wilayah poligonal. Sistem menutup poligon secara otomatis, jika perlu, dengan menggambar garis dari puncak terakhir ke yang pertama.
CRgn::CreatePolyPolygonRgn Menginisialisasi CRgn objek dengan wilayah yang terdiri dari serangkaian poligon tertutup. Poligon mungkin terputus-putus, atau mungkin tumpang tindih.
CRgn::CreateRectRgn Menginisialisasi CRgn objek dengan wilayah persegi panjang.
CRgn::CreateRectRgnIndirect Menginisialisasi CRgn objek dengan wilayah persegi panjang yang ditentukan oleh struktur RECT.
CRgn::CreateRoundRectRgn Menginisialisasi CRgn objek dengan wilayah persegi panjang dengan sudut bulat.
CRgn::EqualRgn Memeriksa dua CRgn objek untuk menentukan apakah objek tersebut setara.
CRgn::FromHandle Mengembalikan penunjuk ke CRgn objek saat diberikan handel ke wilayah Windows.
CRgn::GetRegionData Mengisi buffer yang ditentukan dengan data yang menjelaskan wilayah tertentu.
CRgn::GetRgnBox Mengambil koordinat persegi panjang CRgn pembatas objek.
CRgn::OffsetRgn CRgn Memindahkan objek menurut offset yang ditentukan.
CRgn::P tInRegion Menentukan apakah titik yang ditentukan berada di wilayah tersebut.
CRgn::RectInRegion Menentukan apakah ada bagian dari persegi panjang tertentu yang berada dalam batas wilayah.
CRgn::SetRectRgn CRgn Mengatur objek ke wilayah persegi panjang yang ditentukan.

Operator Publik

Nama Deskripsi
CRgn::operator HRGN Mengembalikan handel Windows yang terkandung dalam CRgn objek.

Keterangan

Wilayah adalah area elips atau poligonal dalam jendela. Untuk menggunakan wilayah, Anda menggunakan fungsi anggota kelas CRgn dengan fungsi kliping yang didefinisikan sebagai anggota kelas CDC.

Fungsi anggota membuat CRgn , mengubah, dan mengambil informasi tentang objek wilayah tempat mereka dipanggil.

Untuk informasi selengkapnya tentang menggunakan CRgn, lihat Objek Grafis.

Hierarki Warisan

CObject

CGdiObject

CRgn

Persyaratan

Header: afxwin.h

CRgn::CombineRgn

Membuat wilayah GDI baru dengan menggabungkan dua wilayah yang ada.

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

Parameter

pRgn1
Mengidentifikasi wilayah yang sudah ada.

pRgn2
Mengidentifikasi wilayah yang sudah ada.

nCombineMode
Menentukan operasi yang akan dilakukan saat menggabungkan dua wilayah sumber. Ini bisa menjadi salah satu nilai berikut:

  • RGN_AND Menggunakan area yang tumpang tindih dari kedua wilayah (persimpangan).

  • RGN_COPY Membuat salinan wilayah 1 (diidentifikasi oleh pRgn1).

  • RGN_DIFF Membuat wilayah yang terdiri dari wilayah 1 (diidentifikasi oleh pRgn1) yang bukan bagian dari wilayah 2 (diidentifikasi oleh pRgn2).

  • RGN_OR Menggabungkan kedua wilayah secara keseluruhan (gabungan).

  • RGN_XOR Menggabungkan kedua wilayah tetapi menghapus area yang tumpang tindih.

Tampilkan Nilai

Menentukan jenis wilayah yang dihasilkan. Jenis dapat berupa salah satu dari nilai berikut:

  • WILAYAH COMPLEXREGION Baru memiliki batas yang tumpang tindih.

  • KESALAHAN Tidak ada wilayah baru yang dibuat.

  • WILAYAH BARU NULLREGION kosong.

  • WILAYAH SIMPLEREGION Baru tidak memiliki batas yang tumpang tindih.

Keterangan

Wilayah digabungkan seperti yang ditentukan oleh nCombineMode.

Dua wilayah yang ditentukan digabungkan, dan handel wilayah yang dihasilkan disimpan dalam CRgn objek. Dengan demikian, wilayah apa pun yang disimpan dalam CRgn objek digantikan oleh wilayah gabungan.

Ukuran suatu wilayah dibatasi hingga 32.767 sebesar 32.767 unit logis atau memori 64K, mana yang lebih kecil.

Gunakan CopyRgn untuk hanya menyalin satu wilayah ke wilayah lain.

Contoh

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

Menyalin wilayah yang ditentukan oleh pRgnSrc ke CRgn dalam objek.

int CopyRgn(CRgn* pRgnSrc);

Parameter

pRgnSrc
Mengidentifikasi wilayah yang sudah ada.

Tampilkan Nilai

Menentukan jenis wilayah yang dihasilkan. Jenis dapat berupa salah satu dari nilai berikut:

  • WILAYAH COMPLEXREGION Baru memiliki batas yang tumpang tindih.

  • KESALAHAN Tidak ada wilayah baru yang dibuat.

  • WILAYAH BARU NULLREGION kosong.

  • WILAYAH SIMPLEREGION Baru tidak memiliki batas yang tumpang tindih.

Keterangan

Wilayah baru menggantikan wilayah yang sebelumnya disimpan dalam CRgn objek. Fungsi ini adalah kasus khusus dari fungsi anggota CombineRgn .

Contoh

Lihat contoh untuk CRgn::CreateEllipticRgn.

CRgn::CreateEllipticRgn

Membuat wilayah elips.

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

Parameter

x1
Menentukan koordinat x logis dari sudut kiri atas persegi panjang pembatas elips.

y1
Menentukan koordinat y logis dari sudut kiri atas persegi panjang pembatas elips.

x2
Menentukan koordinat x logis dari sudut kanan bawah persegi panjang pembatas elips.

y2
Menentukan koordinat y logis dari sudut kanan bawah persegi panjang pembatas elips.

Tampilkan Nilai

Bukan nol jika operasi berhasil; jika tidak, 0.

Keterangan

Wilayah didefinisikan oleh persegi panjang pembatas yang ditentukan oleh x1, y1, x2, dan y2. Wilayah disimpan dalam CRgn objek .

Ukuran suatu wilayah dibatasi hingga 32.767 sebesar 32.767 unit logis atau memori 64K, mana yang lebih kecil.

Setelah selesai menggunakan wilayah yang dibuat dengan CreateEllipticRgn fungsi , aplikasi harus memilih wilayah di luar konteks perangkat dan menggunakan DeleteObject fungsi untuk menghapusnya.

Contoh

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

Membuat wilayah elips.

BOOL CreateEllipticRgnIndirect(LPCRECT lpRect);

Parameter

lpRect
Menunjuk ke RECT struktur atau CRect objek yang berisi koordinat logis sudut kiri atas dan kanan bawah persegi panjang pembatas elips.

Tampilkan Nilai

Bukan nol jika operasi berhasil; jika tidak, 0.

Keterangan

Wilayah didefinisikan oleh struktur atau objek yang diacu oleh lpRect dan disimpan dalam CRgn objek.

Ukuran suatu wilayah dibatasi hingga 32.767 sebesar 32.767 unit logis atau memori 64K, mana yang lebih kecil.

Setelah selesai menggunakan wilayah yang dibuat dengan CreateEllipticRgnIndirect fungsi , aplikasi harus memilih wilayah di luar konteks perangkat dan menggunakan DeleteObject fungsi untuk menghapusnya.

Contoh

Lihat contoh untuk CRgn::CreateRectRgnIndirect.

CRgn::CreateFromData

Membuat wilayah dari wilayah tertentu dan data transformasi.

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

Parameter

lpXForm
Menunjuk ke struktur ata XFORMyang menentukan transformasi yang akan dilakukan pada wilayah tersebut. Jika pointer ini ADALAH NULL, transformasi identitas digunakan.

nCount
Menentukan jumlah byte yang ditujukkan oleh pRgnData.

pRgnData
Menunjuk ke struktur data RGNDATA yang berisi data wilayah.

Tampilkan Nilai

Bukan nol jika fungsi berhasil; jika tidak, 0.

Keterangan

Aplikasi dapat mengambil data untuk suatu wilayah dengan memanggil CRgn::GetRegionData fungsi .

CRgn::CreateFromPath

Membuat wilayah dari jalur yang dipilih ke dalam konteks perangkat tertentu.

BOOL CreateFromPath(CDC* pDC);

Parameter

pDC
Mengidentifikasi konteks perangkat yang berisi jalur tertutup.

Tampilkan Nilai

Bukan nol jika fungsi berhasil; jika tidak, 0.

Keterangan

Konteks perangkat yang diidentifikasi oleh parameter pDC harus berisi jalur tertutup. Setelah CreateFromPath mengonversi jalur menjadi wilayah, Windows membuang jalur tertutup dari konteks perangkat.

CRgn::CreatePolygonRgn

Membuat wilayah poligonal.

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

Parameter

lpPoints
Menunjuk ke array POINT struktur atau array CPoint objek. Setiap struktur menentukan koordinat x dan koordinat y dari satu puncak poligon. Struktur POINT memiliki bentuk berikut:

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

nCount
Menentukan jumlah POINT struktur atau CPoint objek dalam array yang ditujukkan oleh lpPoints.

nMode
Menentukan mode pengisian untuk wilayah tersebut. Parameter ini mungkin BERGANTIAN atau BERLIKU.

Tampilkan Nilai

Bukan nol jika operasi berhasil; jika tidak, 0.

Keterangan

Sistem menutup poligon secara otomatis, jika perlu, dengan menggambar garis dari puncak terakhir ke yang pertama. Wilayah yang dihasilkan disimpan dalam CRgn objek .

Ukuran suatu wilayah dibatasi hingga 32.767 sebesar 32.767 unit logis atau memori 64K, mana yang lebih kecil.

Ketika mode pengisian poligon bergantian, sistem mengisi area antara sisi poligon bernomor ganjil dan bernomor genap pada setiap baris pemindaian. Artinya, sistem mengisi area antara sisi pertama dan kedua, antara sisi ketiga dan keempat, dan sebagainya.

Ketika mode pengisian poligon adalah WINDING, sistem menggunakan arah di mana gambar digambar untuk menentukan apakah akan mengisi area. Setiap segmen garis dalam poligon digambar secara searah jarang atau arah berlawanan arah jarang. Setiap kali garis imajiner digambar dari area tertutup ke bagian luar gambar melewati segmen garis searah jaring jam, hitungan akan bertambah bertahap. Ketika garis melewati segmen garis berlawanan arah jaring, jumlahnya dikurangi. Area diisi jika jumlahnya bukan nol ketika garis mencapai bagian luar gambar.

Setelah aplikasi selesai menggunakan wilayah yang dibuat dengan CreatePolygonRgn fungsi , aplikasi harus memilih wilayah di luar konteks perangkat dan menggunakan DeleteObject fungsi untuk menghapusnya.

Contoh

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

Membuat wilayah yang terdiri dari serangkaian poligon tertutup.

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

Parameter

lpPoints
Menunjuk ke array POINT struktur atau array CPoint objek yang menentukan simpul poligon. Setiap poligon harus ditutup secara eksplisit karena sistem tidak menutupnya secara otomatis. Poligon ditentukan secara berturut-turut. Struktur POINT memiliki bentuk berikut:

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

lpPolyCounts
Menunjuk ke array bilangan bulat. Bilangan bulat pertama menentukan jumlah simpul dalam poligon pertama dalam array lpPoints , bilangan bulat kedua menentukan jumlah simpul di poligon kedua, dan sebagainya.

nCount
Menentukan jumlah total bilangan bulat dalam array lpPolyCounts .

nPolyFillMode
Menentukan mode pengisian poligon. Nilai ini mungkin BERGANTIAN atau BERLIKU.

Tampilkan Nilai

Bukan nol jika operasi berhasil; jika tidak, 0.

Keterangan

Wilayah yang dihasilkan disimpan dalam CRgn objek .

Poligon mungkin terputus-putus, atau mungkin tumpang tindih.

Ukuran suatu wilayah dibatasi hingga 32.767 sebesar 32.767 unit logis atau memori 64K, mana yang lebih kecil.

Ketika mode pengisian poligon bergantian, sistem mengisi area antara sisi poligon bernomor ganjil dan bernomor genap pada setiap baris pemindaian. Artinya, sistem mengisi area antara sisi pertama dan kedua, antara sisi ketiga dan keempat, dan sebagainya.

Ketika mode pengisian poligon adalah WINDING, sistem menggunakan arah di mana gambar digambar untuk menentukan apakah akan mengisi area. Setiap segmen garis dalam poligon digambar secara searah jarang atau arah berlawanan arah jarang. Setiap kali garis imajiner digambar dari area tertutup ke bagian luar gambar melewati segmen garis searah jaring jam, hitungan akan bertambah bertahap. Ketika garis melewati segmen garis berlawanan arah jaring, jumlahnya dikurangi. Area diisi jika jumlahnya bukan nol ketika garis mencapai bagian luar gambar.

Setelah aplikasi selesai menggunakan wilayah yang dibuat dengan CreatePolyPolygonRgn fungsi , aplikasi harus memilih wilayah di luar konteks perangkat dan menggunakan fungsi anggota CGDIObject::D eleteObject untuk menghapusnya.

CRgn::CreateRectRgn

Membuat wilayah persegi panjang yang disimpan dalam CRgn objek.

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

Parameter

x1
Menentukan koordinat x logis dari sudut kiri atas wilayah.

y1
Menentukan koordinat y logis dari sudut kiri atas wilayah.

x2
Menentukan koordinat x logis dari sudut kanan bawah wilayah.

y2
Menentukan koordinat y logis dari sudut kanan bawah wilayah.

Tampilkan Nilai

Bukan nol jika operasi berhasil; jika tidak, 0.

Keterangan

Ukuran suatu wilayah dibatasi hingga 32.767 sebesar 32.767 unit logis atau memori 64K, mana yang lebih kecil.

Setelah selesai menggunakan wilayah yang dibuat oleh CreateRectRgn, aplikasi harus menggunakan fungsi anggota CGDIObject::D eleteObject untuk menghapus wilayah.

Contoh

CRgn   rgn;

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

Untuk contoh tambahan, lihat CRgn::CombineRgn.

CRgn::CreateRectRgnIndirect

Membuat wilayah persegi panjang yang disimpan dalam CRgn objek.

BOOL CreateRectRgnIndirect(LPCRECT lpRect);

Parameter

lpRect
Menunjuk ke RECT struktur atau CRect objek yang berisi koordinat logis sudut kiri atas dan kanan bawah wilayah. Struktur RECT memiliki bentuk berikut:

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

Tampilkan Nilai

Bukan nol jika operasi berhasil; jika tidak, 0.

Keterangan

Ukuran suatu wilayah dibatasi hingga 32.767 sebesar 32.767 unit logis atau memori 64K, mana yang lebih kecil.

Setelah selesai menggunakan wilayah yang dibuat oleh CreateRectRgnIndirect, aplikasi harus menggunakan fungsi anggota CGDIObject::D eleteObject untuk menghapus wilayah.

Contoh

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

Membuat wilayah persegi panjang dengan sudut bulat yang disimpan dalam CRgn objek.

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

Parameter

x1
Menentukan koordinat x logis dari sudut kiri atas wilayah.

y1
Menentukan koordinat y logis dari sudut kiri atas wilayah.

x2
Menentukan koordinat x logis dari sudut kanan bawah wilayah.

y2
Menentukan koordinat y logis dari sudut kanan bawah wilayah.

x3
Menentukan lebar elips yang digunakan untuk membuat sudut bulat.

y3
Menentukan tinggi elips yang digunakan untuk membuat sudut bulat.

Tampilkan Nilai

Bukan nol jika operasi berhasil; jika tidak, 0.

Keterangan

Ukuran suatu wilayah dibatasi hingga 32.767 sebesar 32.767 unit logis atau memori 64K, mana yang lebih kecil.

Setelah aplikasi selesai menggunakan wilayah yang dibuat dengan CreateRoundRectRgn fungsi , aplikasi harus memilih wilayah di luar konteks perangkat dan menggunakan fungsi anggota CGDIObject::D eleteObject untuk menghapusnya.

Contoh

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

Membuat CRgn objek.

CRgn();

Keterangan

Anggota m_hObject data tidak berisi wilayah GDI Windows yang valid sampai objek diinisialisasi dengan satu atau beberapa fungsi anggota lainnya CRgn .

Contoh

Lihat contoh untuk CRgn::CreateRoundRectRgn.

CRgn::EqualRgn

Menentukan apakah wilayah yang diberikan setara dengan wilayah yang disimpan dalam CRgn objek.

BOOL EqualRgn(CRgn* pRgn) const;

Parameter

pRgn
Mengidentifikasi wilayah.

Tampilkan Nilai

Bukan nol jika kedua wilayah tersebut setara; jika tidak, 0.

Contoh

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

Mengembalikan penunjuk ke CRgn objek saat diberikan handel ke wilayah Windows.

static CRgn* PASCAL FromHandle(HRGN hRgn);

Parameter

hRgn
Menentukan handel ke wilayah Windows.

Tampilkan Nilai

Penunjuk ke CRgn objek. Jika fungsi tidak berhasil, nilai yang dikembalikan adalah NULL.

Keterangan

CRgn Jika objek belum dilampirkan ke handel, objek sementara CRgn dibuat dan dilampirkan. Objek sementara CRgn ini hanya berlaku sampai kali berikutnya aplikasi memiliki waktu menganggur dalam perulangan peristiwanya, di mana semua objek grafis sementara dihapus. Cara lain untuk mengatakan ini adalah bahwa objek sementara hanya valid selama pemrosesan satu pesan jendela.

CRgn::GetRegionData

Mengisi buffer yang ditentukan dengan data yang menjelaskan wilayah.

int GetRegionData(
    LPRGNDATA lpRgnData,
    int nCount) const;

Parameter

lpRgnData
Menunjuk ke struktur data RGNDATA yang menerima informasi. Jika parameter ini NULL, nilai pengembalian berisi jumlah byte yang diperlukan untuk data wilayah.

nCount
Menentukan ukuran, dalam byte, dari buffer lpRgnData .

Tampilkan Nilai

Jika fungsi berhasil dan nCount menentukan jumlah byte yang memadai, nilai pengembalian selalu nCount. Jika fungsi gagal, atau jika nCount menentukan jumlah byte yang kurang dari yang memadai, nilai yang dikembalikan adalah 0 (kesalahan).

Keterangan

Data ini mencakup dimensi persegi panjang yang membentuk wilayah. Fungsi ini digunakan bersama dengan CRgn::CreateFromData fungsi .

CRgn::GetRgnBox

Mengambil koordinat persegi panjang CRgn pembatas objek.

int GetRgnBox(LPRECT lpRect) const;

Parameter

lpRect
Arahkan ke RECT struktur atau CRect objek untuk menerima koordinat persegi panjang pembatas. Struktur RECT memiliki bentuk berikut:

typedef struct tagRECT {

int left;

int top;

int right;

int bottom;

} RECT;

Tampilkan Nilai

Menentukan jenis wilayah. Ini bisa menjadi salah satu nilai berikut:

  • Wilayah COMPLEXREGION memiliki batas yang tumpang tindih.

  • Wilayah NULLREGION kosong.

  • Objek KESALAHAN CRgn tidak menentukan wilayah yang valid.

  • Wilayah SIMPLEREGION tidak memiliki batas yang tumpang tindih.

Contoh

Lihat contoh untuk CRgn::CreatePolygonRgn.

CRgn::OffsetRgn

Memindahkan wilayah yang disimpan dalam CRgn objek oleh offset yang ditentukan.

int OffsetRgn(
    int x,
    int y);

int OffsetRgn(POINT point);

Parameter

x
Menentukan jumlah unit untuk berpindah ke kiri atau kanan.

y
Menentukan jumlah unit yang akan dipindahkan ke atas atau ke bawah.

ujung
Koordinat x titik menentukan jumlah unit untuk berpindah ke kiri atau kanan. Koordinat y titik menentukan jumlah unit yang akan dipindahkan ke atas atau ke bawah. Parameter titik mungkin berupa POINT struktur atau CPoint objek.

Tampilkan Nilai

Jenis wilayah baru. Ini bisa menjadi salah satu nilai berikut:

  • Wilayah COMPLEXREGION memiliki batas yang tumpang tindih.

  • Handel Wilayah KESALAHAN tidak valid.

  • Wilayah NULLREGION kosong.

  • Wilayah SIMPLEREGION tidak memiliki batas yang tumpang tindih.

Keterangan

Fungsi ini memindahkan unit wilayah x di sepanjang sumbu x dan unit y di sepanjang sumbu y.

Nilai koordinat suatu wilayah harus kurang dari atau sama dengan 32.767 dan lebih besar dari atau sama dengan -32.768. Parameter x dan y harus dipilih dengan hati-hati untuk mencegah koordinat wilayah yang tidak valid.

Contoh

Lihat contoh untuk CRgn::CreateEllipticRgn.

CRgn::operator HRGN

Gunakan operator ini untuk mendapatkan handel Windows GDI objek yang CRgn terpasang.

operator HRGN() const;

Tampilkan Nilai

Jika berhasil, handel ke objek GDI Windows yang diwakili oleh CRgn objek; jika tidak, NULL.

Keterangan

Operator ini adalah operator casting, yang mendukung penggunaan langsung objek HRGN.

Untuk informasi selengkapnya tentang menggunakan objek grafis, lihat artikel Objek Grafis di Windows SDK.

CRgn::P tInRegion

Memeriksa apakah titik yang diberikan oleh x dan y berada di wilayah yang disimpan dalam CRgn objek.

BOOL PtInRegion(
    int x,
    int y) const;

BOOL PtInRegion(POINT point) const;

Parameter

x
Menentukan koordinat x logis dari titik yang akan diuji.

y
Menentukan koordinat y logis dari titik yang akan diuji.

ujung
Koordinat titik x dan y menentukan koordinat x dan y dari titik untuk menguji nilai. Parameter titik dapat berupa POINT struktur atau CPoint objek.

Tampilkan Nilai

Bukan nol jika titik berada di wilayah tersebut; jika tidak, 0.

CRgn::RectInRegion

Menentukan apakah ada bagian dari persegi panjang yang ditentukan oleh lpRect berada dalam batas wilayah yang disimpan dalam CRgn objek.

BOOL RectInRegion(LPCRECT lpRect) const;

Parameter

lpRect
Menunjuk ke RECT struktur atau CRect objek. Struktur RECT memiliki bentuk berikut:

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

Tampilkan Nilai

Bukan nol jika ada bagian dari persegi panjang yang ditentukan terletak di dalam batas wilayah; jika tidak, 0.

CRgn::SetRectRgn

Membuat wilayah persegi panjang.

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

void SetRectRgn(LPCRECT lpRect);

Parameter

x1
Menentukan koordinat x dari sudut kiri atas wilayah persegi panjang.

y1
Menentukan koordinat y dari sudut kiri atas wilayah persegi panjang.

x2
Menentukan koordinat x dari sudut kanan bawah wilayah persegi panjang.

y2
Menentukan koordinat y dari sudut kanan bawah wilayah persegi panjang.

lpRect
Menentukan wilayah persegi panjang. Dapat berupa penunjuk ke RECT struktur atau CRect objek.

Keterangan

Namun, tidak seperti CreateRectRgn, itu tidak mengalokasikan memori tambahan dari timbunan aplikasi Windows lokal. Sebaliknya, ia menggunakan ruang yang dialokasikan untuk wilayah yang disimpan dalam CRgn objek. Ini berarti bahwa CRgn objek harus sudah diinisialisasi dengan wilayah Windows yang valid sebelum memanggil SetRectRgn. Poin yang diberikan oleh x1, y1, x2, dan y2 menentukan ukuran minimum ruang yang dialokasikan.

Gunakan fungsi ini alih-alih CreateRectRgn fungsi anggota untuk menghindari panggilan ke manajer memori lokal.

Lihat juga

Kelas CWnd
Bagan Hierarki