HIK Elektronikus Felsőoktatási Tankönyv- és Szakkönyvtár
A Kempelen Farkas Felsőoktatási Digitális Tankönyvtár/vagy más megjelenítő által közvetített digitális tartalmat a felhasználó a szerzői jogról szóló 1999. évi LXXVI. tv. 33. paragrafus (4) bekezdésében meghatározott oktatási, illetve tudományos kutatási célra használhatja fel. A felhasználó a digitális tartalmat képernyőn megjelenítheti, letöltheti, arról elektronikus adathordozóra vagy papíralapon másolatot készíthet, adatrögzítő rendszerében tárolhatja. A Kempelen Farkas Felsőoktatási Digitális Tankönyvtár/vagy más megjelenítő weblapján található digitális tartalmak üzletszerû felhasználása tilos, valamint kizárt a digitális tartalom módosítása és átdolgozása, illetve az ilyen módon keletkezett származékos anyag további felhasználása.

17.5.5. Regiók létrehozása

A GDI+-ban könnyedén formázhatunk régiókat téglalapokból (Rectangle object) és grafikus objektumok sorozatából (GraphicsPath object) Ha tehát ellipszisre vagy kerekített téglalapra, vagy egyéb grafikus alakzatra van szükségünk a régiók létrehozásánál, akkor ezeket az alakzatokat először a GraphicsPath objektum segítségével kell létrehoznunk, majd átadnunk a Region konstruktornak.

A Region osztály Union és Intersect metódusaival egyesíthetünk két régiót ill. meghatározhatjuk a régiók metszetét. Emellett Xor, Exclude és Complement metódusokat is használhatunk.

Tekintsünk egy példát:

public void myRegionExamples(PaintEventArgs e)

{

// Az első téglalap létrehozása.

Rectangle regionRect = new Rectangle(20, 20, 100, 100);

e.Graphics.DrawRectangle(Pens.Black, regionRect);

// Az ellipszis létrehozása GraphicsPath objektumként.

GraphicsPath path=new GraphicsPath();;

path.AddEllipse(90, 30, 100, 110);

// Az első régió megkonstruálása.

Region myregion1=new Region(path);

e.Graphics.DrawPath(new Pen(Color.Black), path);

// Az második régió megkonstruálása.

Region myRegion2 = new Region(regionRect);

// Határozzuk meg a második régió metszetét az elsővel!

myRegion2.Intersect(path);

//myRegion2.Union(path);

//myRegion2.Xor(path);

//myRegion2.Exclude(path);

//myRegion2.Complement(path);

// Színezzük kia metszetet!

SolidBrush myBrush = new SolidBrush(Color.Blue);

e.Graphics.FillRegion(myBrush, myRegion2);

}

Futási képek:

Metszet: myRegion2.Intersect(path);

Az Intersect metódus két régió esetén olyan régiót ad, amelynek pontjai mindkét régióhoz tartoznak (régiók metszete).

Unió: myRegion2.Union(path);

Az Union metódus két régió esetén olyan régiót ad, amelynek pontjai vagy az első vagy a második régióhoz tartoznak (régiók uniója).

Kizáró vagy: myRegion2.Xor(path);

Az Xor metódus két régió esetén olyan régiót ad, amelynek pontjai vagy az első vagy a második régióhoz tartoznak, de nem mindkettőhöz (Kizáró vagy).

Különbség: myRegion2.Exclude(path);

Az Exculde metódus két régió esetén olyan régiót ad, amely az első régió minden olyan pontját tartalmazza, amely nincs benne a második régióban (különbség képzés).

Komplementer: myRegion2.Complement(path);

A Complement metódus két régió esetén olyan régiót ad, amely a második régió minden olyan pontját tartalmazza, amely nincs benne az első régióban (komplementer képzés).