Risanje v C#

Risanje v C#

Avtor: Tanja Kokalj

Uvod

Pri seminarski nalogi sem se odločila, da bom podrobneje pogledala risanje v programu C#. Ukaze sem preizkušala v Microsoft Visual C# 2010 Expres.

Kako zaženemo okolje za risanje v C#

Ko zaženemo program Microsoft Visual C# 2010 Expres izberemo izbiro New Project (nov projekt). Med vsemi predlaganimi izbirami izberemo WindowsFormAplication.

(Slika1_nov projekt.PNG)
Slika 1: Nov projekt

Nato se nam odpre novo delovno okolje.

(Slika2_delovno okolje.PNG)
Slika 2: Delovno okolje

Ukazi za risanje v C#

Na začetku moramo definirati nov grafični objekt platno.

 System.Drawing.Graphics platno;  // definiramo grafični objekt
platno = this.CreateGraphics();

Potem lahko pričnemo z risanjem.

SVINČNIK - PEN

Prvi pomembni ukaz je Pen. Z njim določimo barvo in debelino svinčnika. Uporabimo ga pri vseh ukazih z Draw (DrawLine, DrawRectangle…) .

Pen svincnik1 = new Pen(System.Drawing.Color.izbranaBarva, debelina);

Ukaz vsebuje dva parametra. Prvi nam pove barvo, drugi pa debelino črte. Barve moramo navajati v angleškem jeziku (Red, Green…), ali pa jih ustvarimo sami s pomočjo ukaza Color mojaBarva = Color.FromArgb(23,32,45) ; (kjer številke predstavljajo barvo v RGB formatu), črte pa s števili (4).

ČRTA – LINE Velikokrat se pojavi tudi ukaz DrawLine . Ta nam nariše ravno črto med dvema točkama. V tem primeru moramo nastaviti 5 argumentov. Prvi argument je svinčnik, drugi štirje pa koordinate točk.

platno.DrawLine(svinčnik, x1, y1, x2, y2);
(Slika4_crta2.PNG)
Slika 3: Črta

PRAVOKOTNIK - RECTANGLE Pri risanju pravokotnikov se lahko odločimo kako ga bomo pobarvali. Lahko je poln ali prazen, kar določamo z ukazoma DrawRectangle in FillRectangle. Če uporabimo prvega narišemo praznega, sicer pa polnega. Pred klicanjem tega ukaza moramo definirati še območje pravokotnika. To storimo s pomočjo ukaza Rectangle stirikotnik = new Rectangle(x1, y1, x2, y2) . Kot opazimo imamo štiri argumente, ki ponazarjajo dve točki. Ti ležita na diagonali pravokotnika in sicer je prva točka v zgornjem levem kotu pravokotnika, druga točka pa v spodnjem desnem. Ko želimo narisati prazen pravokotnik napišemo ukaz platno.DrawRectangle(svincnik, stirikotnik) .

Ta ima podana dva parametra in sicer svinčnik ter območje štirikotnika.

(kvadrat.PNG)
Slika 4: Prazen štirikotnik

Za poln pravokotnik pa uporabimo ukaz platno.FillRectangle(barva, stirikotnik) . Argumenta, ki sta uporabljena v ukazu določata barvo polnila ter območje na katerem leži štirikotnik. Barve določimo s pomočjo ukaza Brush barva = new SolidBrush(System.Drawing.Color.izbranaBarva) .

(polnstirikotnik.PNG)
Slika 5: Poln štirikotnik

ELIPSA – ELLIPSE

Elipso lahko prav tako kot pravokotnik narišemo polno ali prazno. Pri risanju praznega lika uporabimo ukaz platno.DrawEllipse(svincnik, obmocjeElipse) . Za izris potrebujemo barvo ter debelino črte (svinčnik) in območje na katerem leži elipsa. Območje lege določimo enako kot za pravokotnik (RectangleobmocjeElipse = new Rectangle(x1, y1, x2, y2) ). Elipso nam bo narisalo znotraj pravokotnika, katerega območje smo podali.

(elipsa1.PNG)
Slika 6: Prazna elipsa

Pri risanju polne elipse pa uporabimo ukaz platno.FillEllipse(barva, obmocjeElipse) . Barvo določimo pa enako kot pri pravokotniku z Brush.

(elipsa2.PNG)
Slika 7: Polna elipsa

VEČKOTNIK – POLYGON

Pri definiranju območja večkotnika moramo najprej definirati točke. To bomo naredili s pomočjo ukaza Point.

Point[] polygonPoints = new Point[4];
polygonPoints[0] = new Point(40, 10);
polygonPoints[1] = new Point(70, 150);
polygonPoints[2] = new Point(150, 50);
polygonPoints[3] = new Point(170, 150);

Z zgornjimi ukazi smo ustvarili neko območje na štirih točkah. Nato pa s pomočjo ukaza platno.DrawPolygon(svincnik, polygonPoints) narišemo nek prazen večkotnik. Točke se med seboj povezujejo v takem vrstnem redu kot so navedene, s tem da se na koncu povežeta še prva ter zadnja. Argumenti so enaki, kot pri elipsi ter štirikotniku. Torej imamo svinčnik in območje večkotnika.

(mnogokotnik1.PNG)
Slika 8: Prazn večkotnik

Da bi bil večkotnik poln pa uporabimo ukaz platno.FillPolygon(barva, polygonPoints) .

(mnogokotnik2.PNG)
Slika 9: Poln večkotnik

BESEDILO

Pri pisanju besedila bomo uporabili dva nova ukaza. Najprej moramo določiti vrsto pisave. To naredimo z Font pisava = new System.Drawing.Font(pisava, velikost, FontStyle.način) . Kot pisave so shranjene vse Microsoftove uradne pisave (Arial, Calibri, Cambia…). Pri zapisu moramo biti pozorni, da vrsto pisave podamo v navednicah. Velikost pisave je prikazana s številko. Za način pisave lahko izberemo eno od predlaganih možnosti (Bold – odebeljeno, Italic – nagnjeno, Regular – navadno, Strikeout – prečrtano ali Underline – podčrtano).

Ko določimo pisavo le še narišemo to na Form. To naredimo s pomočjo ukaza platno.DrawString(besedilo, pisava, barva, x1, y1) . V tem primeru imamo 5 parametrov. V parameter besedilo zapišemo kar želimo izpisati. Pisavo smo določili s pomočjo zgornjega ukaza, prav tako tudi barvo. Zadnja dva argumenta pa predstavljata koordinato kjer naj bi se izpis začel izpisovati.

(pisava.PNG)
Slika 10: Besedilo

Naloge

Z ukazi za risanje nariši smreko!

Najprej narišemo deblo: Rectangle stirikotnik = new Rectangle(80, 80, 70, 100);
Brush barva1 = new SolidBrush(System.Drawing.Color.Brown);
platno.FillRectangle(barva1, stirikotnik); 
(smreka1.PNG)
Slika 11: Deblo
Nato ustvarimo področje za trikotnik. Point[] polygonPoints = new Point[3];
polygonPoints[0] = new Point(50, 100);
polygonPoints[1] = new Point(120, 20);
polygonPoints[2] = new Point(190, 100);
Potem pa narišemo poln trikotnik.  Brush barva2 = new SolidBrush(System.Drawing.Color.Green);
platno.FillPolygon(barva2, polygonPoints); 
(smreka2.PNG)
Slika 12: Deblo in vrh krošnje
Nato zgornji postopek še dvakrat ponovimo. Le koordinate trikotnika nekoliko spremenimo. polygonPoints1[0] = new Point(50, 120);
polygonPoints1[1] = new Point(120, 40);
polygonPoints1[2] = new Point(190, 120);
platno.FillPolygon(barva2, polygonPoints); 
(smreka3.PNG)
Slika 13: Deblo in krošnja
Nato zgornji postopek še dvakrat ponovimo. Le koordinate trikotnika nekoliko spremenimo. Point[] polygonPoints2 = new Point[3];
polygonPoints2[0] = new Point(50, 140);
polygonPoints2[1] = new Point(120, 60);
polygonPoints2[2] = new Point(190, 140);
platno.FillPolygon(barva2, polygonPoints2);
platno.FillPolygon(barva2, polygonPoints); 
(smreka4.PNG)
Slika 14: Smreka

Z ukazi za risanje nariši televizijo!

Najprej bomo narisali rjav okvir. To bomo naredili tako, da bomo naredili rjav poln pravokotnik. Nato bomo čezenj narisali moder poln okvir, ki bo ponazarjal zaslon. Na koncu pa bomo še dodali anteno, ki jo bomo narisali z dvema črtama.

Rectangle stirikotnik = new Rectangle(40, 70, 210, 150);
Brush barva1 = new SolidBrush(System.Drawing.Color.Brown);
platno.FillRectangle(barva1, stirikotnik);
Rectangle stirikotnik2 = new Rectangle(50, 80, 190, 130);
Brush barva2 = new SolidBrush(System.Drawing.Color.DarkCyan);
platno.FillRectangle(barva2, stirikotnik2);
Pen svincnik1 = new Pen(System.Drawing.Color.Black, 5);
platno.DrawLine(svincnik1, 115, 30, 125, 70);
platno.DrawLine(svincnik1, 125, 70, 135, 30); 

(TV.PNG)
Slika 15: televizija

Pet dodatnih nalog!

  • Nariši sonce!
  • Poskušaj narisati snežaka!
  • Nariši elipso modre barve z vijolično obrobo!
  • Bi znal/a narisati pravilen šestkotnik?
  • Nariši avto!

Viri

  • http://msdn.microsoft.com/en-us/library/4cy2c290(v=VS.71).aspx
  • http://www.techotopia.com/index.php/Drawing_Graphics_in_C_Sharp
0%
0%