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).