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.4. Szétválasztott metódus a rajzolásra (Draw) és a kitöltésre (Fill)

GDI+-nak különböző metódusai vannak pl egy téglalap körvonalának megrajzolása és belső területének a kitöltésére. A DrawRectangle metódus a Pen objektummal, a FillRectangle metódus pedig a Brush objektummal használhatjuk.

Tekintsünk egy példát:

private void myFillexample(PaintEventArgs e)

{Graphics myGraphics=e.Graphics;

HatchBrush myHatchBrush = new HatchBrush(

HatchStyle.Cross,

Color.FromArgb(255, 0, 255, 0),

Color.FromArgb(255, 0, 0, 255));

myGraphics.FillRectangle(myHatchBrush, 100, 50, 100, 30);

Pen myPen = new Pen(Color.FromArgb(255, 255, 0, 0), 3);

myGraphics.DrawRectangle(myPen, 250, 50, 100, 30);

}

Mintával kitöltött és körvonalával megrajzolt téglalapok

A FillRectangle és DrawRectangle metódusoknak a GDI+ használatakor az első paraméter mellett még meg kell adnunk a téglalap bal felső sarkának a koordinátáit, s a téglalap szélességét, és hosszúságát (left, top, width és height). Teljesen hasonlóan járunk el az DrawEllipse és a FillEllipse metódusok használatakor is. Más programozási nyelvek grafikus könyvtáraiban szokás az ellipszist középpontjával, valamint a kis és nagy tengelyével megadni: Ellipse(x,y,a,b); ugyanez a GDI+ -ban:

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

{

Pen blackPen= new Pen(Color.Black, 3);

Pen redPen= new Pen(Color.Red, 1);

//Az ellipszis középpontja, és tengelyei

float x = 300.0F;

float y = 150.0F;

float a = 200.0F;

float b = 100.0F;

// Átalakítás a GDI+ szerint

float left = x-a;

float top = y-b;

float width = 2*a;

float height = 2*b;

e.Graphics.DrawEllipse(redPen,left,top, width, height);

e.Graphics.DrawLine(blackPen,x,y,x,y-b);

e.Graphics.DrawLine(blackPen,x,y,x+a,y);

//A feliratok megjelenítése

string at = "a";

string bt = "b";

System.Drawing.Font drawFont = new System.Drawing.Font("Arial", 16);

System.Drawing.SolidBrush drawBrush = new

System.Drawing.SolidBrush(System.Drawing.Color.Black);

// A szöveg bal felső sarkának a pozíciója.

float ax = x+a/2;

float ay = y-22;

e.Graphics.DrawString(at, drawFont, drawBrush, ax, ay);

float bx = x;

float by = y-b/2;

e.Graphics.DrawString(bt, drawFont, drawBrush, bx, by);

}

Ellipszis két tengelyével

A Color osztálynak négy paramétere van. Az utolsó három a szokásos RGB összetevők: piros (red), zöld (green) és a kék (blue). Az első paraméter az Alpha Blending értéke, amely a rajzoló szín és a háttér szín keverésének a mértékét határozza meg, s ezzel transzparenssé tehetjük ábráinkat