Práce s grafikou (1) Windows Forms při práci s grafikou využí-vají GDI+ (Graphics Device Interface+) GDI+ je následník rozhraní GDI, které je zod-povědné za reprezentaci grafických objektů a jejich zasílání na výstupní zařízení (monitor, tiskárna apod.) GDI realizuje operace jako jsou např.: kreslení úseček a přímek zobrazování fontů správa palet barev 18/05/2018
Práce s grafikou (2) GDI+ se poprvé objevuje u MS Windows XP a umožňuje navíc např.: zobrazování 2D grafiky s využitím antialiasingu používání souřadnic v plovoucí desetinné čárce gradientní přechody různých odstínů barev používání moderních grafických formátů (*.jpg, *.png) skládání afinních transformací práci s barvami v modelu ARGB 18/05/2018
Třída Graphics (1) Definována ve jmenném prostoru: System.Drawing Poskytuje abstraktní povrch, na kterém je možné vykreslovat grafické informace Poznámka: třída Graphics je definována s modifikátorem sealed není možné definovat její potomky Pro zpřístupnění vlastností a metod třídy Graphics je zapotřebí získat její objekt Konstruktor třídy Graphics není veřejný a tudíž jej nelze pro vytvoření objektu využít 18/05/2018
Třída Graphics (2) Objekt třídy Graphics lze získat např.: prostřednictvím parametru, který je předáván ob-služné metodě události Paint (parametr je typu PaintEventArgs) pomocí volání metody CreateGraphics ovlá-dacího prvku (např. formuláře), v němž bude vy-kreslování realizováno: objekt třídy Graphics by měl být využíván pouze v metodě, která jej (pomocí CreateGraphics) získala třída Graphics implementuje rozhraní IDisposab-le a po ukončení kreslení by program měl volat metodu Dispose a tím objekt třídy Graphics uvolnit 18/05/2018
Třída Graphics (3) program by měl zaručit, že k uvolnění objektu třídy Graphics dojde i v případě vzniku výjimky příka-zy využívající tento objekt by měly být v chráněnném bloku (try) a ve sdruženém bloku finally by mělo být provedeno volání metody Dispose příklad: Graphics g = HlOkno.CreateGraphics(); try { } finally { g.Dispose(); } Kreslení pomocí g 18/05/2018
Třída Graphics (4) korektní vyvolání metody Dispose lze u tříd imple-mentujících rozhraní IDisposable zabezpečit i po-mocí klíčového slova using, za nímž se zapíše defi-nice proměnné společně s vytvořením instance dané třídy příklad: using (Graphics g = HlOkno.CreateGraphics()) { } Kreslení pomocí g 18/05/2018
Třída Graphics (5) Metody: Clear: Dispose: DrawArc: DrawBezier: provede vymazání vykreslovacího povrchu specifiko-vanou barvou Dispose: uvolní zdroje používané objektem třídy Graphics DrawArc: vykreslí eliptický (kruhový) oblouk DrawBezier: vykreslí Bézierovu křivku DrawEllipse, FillEllipse: vykreslí elipsu (kružnici) nebo vyplněnou elipsu (kruž-nici) 18/05/2018
Třída Graphics (6) DrawImage: DrawLine: DrawLines: vykreslí obrázek (např. ve formátu *.jpg) DrawLine: vykreslí úsečku spojující dva body DrawLines: vykreslí sérii na sebe navazujících úseček DrawPolygon, FillPolygon: vykreslí mnohoúhelník nebo vyplněný mnohoúhelník DrawRectangle, FillRectangle: vykreslí obdélník (čtverec) nebo vyplněný obdélník (čtverec) DrawString: zobrazí text specifikovaný řetězcem 18/05/2018
Třída Graphics (7) Při vykreslování jsou využívány instance: Poznámka: RotateTransform: aplikuje transformaci pro otočení ScaleTransform: aplikuje transformaci pro změnu měřítka TranslateTransform: aplikuje transformaci pro posun počátku souřadnic Při vykreslování jsou využívány instance: třídy Pen – kreslící pero potomků třídy Brush – štětec třídy Font – písmo Poznámka: nově vytvořené instance tříd Pen, Brush a Font by měly být uvolňovány pomocí metody Dispose 18/05/2018
Třída Pen Definována ve jmenném prostoru: System.Drawing Definuje objekt, který slouží pro vykreslování úseček, křivek a obvodů útvarů (definována s modifikátorem sealed) Vlastnosti: Color: specifikuje barvu kreslícího pera DashStyle: udává styl kreslícího pera (např. plná čára, přerušovaná čára, tečkovaná čára apod.) Width: specifikuje šířku (tloušťku) kreslícího pera 18/05/2018
Třída Brush (1) Definována ve jmenném prostoru: System.Drawing Abstraktní třída (nelze vytvořit její instanci), která slouží jako společný předek pro další třídy definující různé druhy štětců Štětce jsou používány pro vyplňování uzavře-ných útvarů (např. obdélník, elipsa apod.) Mezi potomky třídy Brush patří např.: SolidBrush: definuje jednobarevný štětec (pomocí vlastnosti Color) 18/05/2018
Třída Brush (2) TextureBrush: HatchBrush: LinearGradientBrush: definuje štětec, který pro vyplňování uzavřených útva-rů používá obrázek (texturu) specifikovaný v době vo-lání konstruktoru HatchBrush: definuje šrafovaný štětec barva popředí, pozadí a styl šrafování jsou specifiko-vány v době volání konstruktoru LinearGradientBrush: definuje štětec používající lineární gradient (plynulý přechod jedné barvy do barvy druhé) 18/05/2018
Třída Brush (3) Poznámky: třídy HatchBrush a LinearGradient-Brush jsou definovány ve jmenném prostoru System.Drawing.Drawing2D vytvořené štětce se rovněž používají při zobrazo-vání textů pomocí metody DrawString, kde udávají barvu (výplň) jednotlivých znaků všichni potomci třídy Brush jsou definování s modifikátorem sealed 18/05/2018
Třída Font Definována ve jmenném prostoru: System.Drawing Třída Font určuje písmo, které bude použité při zobrazování textu pomocí metody DrawString Parametry písma (font, velikost, styl apod.) jsou specifikovány v době volání konstruk-toru Poznámka: definována s modifikátorem sealed 18/05/2018
Objektově orientovaná knihovna pro práci s grafickými objekty (1) Implementované grafické objekty (útvary): Kružnice (Circle) Elipsa (Ellipse) Obdélník (Rectangle) Oblouk (Arc) možnost rozšíření o další objekty Požadované funkce: Zobrazení objektu Skrytí objektu Přesunutí objektu 18/05/2018
Objektově orientovaná knihovna pro práci s grafickými objekty (2) Společné vlastnosti objektů: Vlastnosti: int X, int Y souřadnice referenčního bodu objektu bool Visible informace o viditelnosti objektu Form Window okno, ve kterém se objekt bude vykreslovat Metody: konstruktor: (Form initWindow, int initX, int initY) vytvoření objektu s počátečními souřadnicemi referenčního bodu danými parametry initX, initY, který se bude vy-kreslovat v okně initWindow 18/05/2018
Objektově orientovaná knihovna pro práci s grafickými objekty (3) void Draw(Graphics graph, Pen pen) vykreslení objektu (útvaru) prostřednictvím objektu graph s perem pen void Show() zobrazení objektu void Hide() skrytí objektu void MoveTo(int newX, int newY) přesunutí objektu na souřadnice dané parametry newX, newY 18/05/2018
Třída MenuStrip (1) Definována ve jmenném prostoru: System.Windows.Forms Poskytuje mechanismus pro tvorbu a správu hlavního menu formuláře (okna) Nahrazuje třídu MainMenu Třída MenuStrip umožňuje, aby v hlav-ním menu byly umístěny ovládací prvky: ToolStripMenuItem ToolStripComboBox ToolStripTextBox 18/05/2018
Třída MenuStrip (2) Jestliže položka menu má být přístupná po-mocí kláves Alt+písmeno, pak před zna-kem písmeno musí být ve vlastnosti Text uveden symbol & Vlastnosti: Dock: specifikuje umístění hlavního menu Items: kolekce popisující jednotlivé položky menu TextDirection: určuje směr (orientaci) textu (Horizontal, Vertical90 a Vertical270) 18/05/2018
Třída ToolStripMenuItem (1) Definována ve jmenném prostoru: System.Windows.Forms Reprezentuje položku menu zobrazenou v: MenuStrip ContextMenuStrip Vlastnosti: DisplayStyle: udává, zda-li se položka zobrazí jako text, obrázek nebo obojí DropDownItems: kolekce popisující jednotlivé položky podmenu 18/05/2018
Třída ToolStripMenuItem (2) Checked: určuje, zda je u položky menu uveden znak CheckOnClick: udává, zda se při stisku tlačítka myši má u položky menu automaticky objevovat znak Image: obrázek, který bude u položky menu zobrazen ImageTransparentColor: specifikuje transparentní barvu obrázku ShortCut: nastavuje zkratkový povel z klávesnice 18/05/2018
Třída ToolStripMenuItem (3) Text: název položky v menu pokud je před nějakým písmenem uveden znak &, pak je toto písmeno v menu podtržené a je možné použít zkratkového povelu z klávesnice Alt+písmeno symbol - značí vodorovnou oddělovací čáru názvy položek, jejichž zvolení vede k otevření dia-logového okna umožňujícího upřesnění volby, bývá zvykem ukončovat symbolem ... TextDirection: určuje směr (orientaci) textu jedné položky menu (Horizontal, Vertical90 a Vertical270) 18/05/2018
Třída ToolStripMenuItem (4) Metoda: PerformClick: simuluje stisk tlačítka myši Poznámka: přidávání (odebírání) položek menu za běhu pro-gramu je možné realizovat pomocí volání metod vlastností: Items (u MenuStrip) DropDownItems (u ToolStripMenuItem) 18/05/2018
Třída ToolStrip Definována ve jmenném prostoru: System.Windows.Forms Poskytuje mechanismus pro tvorbu a správu proužků s nástroji (nástrojových lišt) Třída ToolStrip umožňuje, aby v nástro-jové liště byly ovládací prvky typu např.: ToolStripButton ToolStripLabel ToolStripDropDownButton ToolStripComboBox ToolStripTextBox ToolStripProgressBar 18/05/2018
Třída StatusStrip Definována ve jmenném prostoru: System.Windows.Forms Poskytuje mechanismus pro tvorbu a správu stavových proužků Třída StatusStrip umožňuje, aby ve sta- vovém proužku byly ovládací prvky typu např.: ToolStripStatusLabel ToolStripDropDownButton ToolStripProgressBar 18/05/2018