Jazyk C# (seminář 7)

Podobné dokumenty
Jazyk C# (seminář 9)

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

PROGRAMOVÁNÍ PRO MS WINDOWS 1

Jazyk C# (seminář 6)

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

PROGRAMOVÁNÍ PRO MS WINDOWS 1

Komponenty v.net. Obsah přednášky

Java - Kresba. 2/28/11 1/8 Java - kresba

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

Klíčové pojmy: Události, handlery, třída Graphics, pera, stětce, kreslení vyplněných a nevyplněných objektů.

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

Jazyk C# (seminář 3)

Pokročilá práce s proměnnými

Jazyk C# a platforma.net

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Používáme Visual Studio

Zásady kreslení Kreslení na obrazovku 139

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.

Programování v jazyku C# II. 4.kapitola

Pavel Procházka. 3. prosince 2014

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

Objekty jako zapozdření dat. začneme vytvářet vlastní objekty a třídy

Př. program s popojíždějícím autíčkem o 50 pixelů při každém stisku Popojeď

Cvičné příklady Hodina 2

Takto chápanému druhu objektů se říká TŘÍDA.

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++

Osnova přednášky. Programové prostředky řízení Úvod do C# II. Přístup ke členům. Členy (Members)

Jazyk C# - přístup k datům

1. Dědičnost a polymorfismus

Generické programování

PREPROCESOR POKRAČOVÁNÍ

Nejzajímavější jsou události MouseDown a KeyDown.

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Programování v jazyku C# II. 1.kapitola

Indexové seznamy. známe už pole, kde ale musí být předem známa velikost indexové seznamy umí růst dynamicky

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Jazyk C# (seminář 5)

Základy objektové orientace I. Únor 2010

PROGRAMOVÁNÍ V C++ CVIČENÍ

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.

Zápis programu v jazyce C#

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 12.2.

8. GRAFICKÉ UŽIVATELSKÉ ROZHRANÍ

Programování v C++ 1, 6. cvičení

Cvičení 7: Delphi objekty CheckedBox, Radio- Button, EditBox

GUI grafických aplikací GUI pro Othello

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

IRAE 07/08 Přednáška č. 10

Základy programování (C#) Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1134_Základy programování (C#) _PWP

POLE. - datová struktura ze složek stejného typu, ke kterým se přistupuje pomocí indexů

Kreslíme do webu. Canvas

zapište obslužnou metodu události Click tlačítka a vyzkoušejte chování polevýsledek.text = polečíslo1.text + polečíslo2.text;

Jak namalovat obraz v programu Malování

7. Datové typy v Javě

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

NPRG031 Programování II 1 / :25:46

NMIN201 Objektově orientované programování 1 / :36:09

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

20. Projekt Domácí mediotéka

Jak namalovat obraz v programu Malování

Projektová dokumentace GED 2006

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Jazyk C# (seminář 3)

Java aplety. Předávání parametrů z HTML

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Úloha 1. Text úlohy. Vyberte jednu z nabízených možností: NEPRAVDA. PRAVDA Úloha 2. Text úlohy

Metodický list k didaktickému materiálu

MRBT. Stacionární průmyslový robot EPSON C3 aplikace pro prezentaci

Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1

Obsah přednášky. GDI+ Tvorba vlastních komponent Vlastní kreslení 1/36

ZP4CS 10. hodina Kreslení deskové hry. Aleš Keprt duben 2015

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Algoritmizace a programování

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

IRAE 07/08 Přednáška č. 7. Začátek (head)

3 Vývojová prostředí, základní prvky jazyka Java, konvence jazyka Java

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

Projekt Obrázek strana 135

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

2 Grafický výstup s využitím knihovny

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

IRAE 07/08 Přednáška č. 1

5 Algoritmy vyplňování 2D oblastí

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Programování v Javě I. Leden 2008

SOUBORY, VSTUPY A VÝSTUPY POKRAČOVÁNÍ

Úvod do programovacích jazyků (Java)

C++ přetěžování funkcí a operátorů. Jan Hnilica Počítačové modelování 19

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

SWT & MigLayout. Alternativy Java GUI v praxi. Pavel Janečka & Tomáš Chlouba. červen 2011

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Výčtový typ strana 67

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Transkript:

Jazyk C# (seminář 7) Pavel Procházka KMI 5. listopadu 2014

WindowsForms basics Windows forms je abstrakce nad WinApi napsaném v C Hello world aplikace ve WinAPI má 114! řádků podle http: //msdn.microsoft.com/cs-cz/library/bb384843.aspx Dobrá zpráva je, že WindowsForms má daleko méně řádků a hlavně méně složitých Navíc VisualStudio obsahuje UI Designer, který umožňuje celé GUI navrhnout graficky, tudíž není třeba ho otrocky kódovat VisualStudio ve spojení s UI designérem generuje automatizovaně kód, který v jistém smyslu usnadňuje psaní kódu, hlavně zlepšuje křivku učení VisualStudio za vás doplní eventhandlery, takže se psaní jednodušších programů, které nepotřebují budovat GUI za běhu redukuje na vyplnění kódu událostí Na druhou stranu pokud budete potřebovat budovat GUI za běhu, tak už Designer ztrácí na významu Není to příliš multiplatformní kvůli vazbám na WinAPI, i když mono to umí Monodevelop nemá podporu pro Windows Forms (pouze experimentální http://www.mono-project.com/ archived/winforms_designer/ )

GUI aplikace v C# WindowsForms basics Ve Visual Studiu nyní volíme Windows Forms Application ne Console Application Program má stejnou strukturu jako Console Application using System; using System.Windows.Forms; /* Form1 je trida, kterou jsme vytvorili pomoci designeru */ namespace WindowsFormsApplication1 { static class Program { static void Main() { /* staticka trida System.Windows.Forms.Application */ Application.Run(new Form1()); } } }

Seznámení s Designerem VS 2012

Důležité třídy a metody Windows Forms Form třída reprezentující okno, od které musí každé okno dědit Metoda Form.InitializeComponent() zařídí, že se okno začne kreslit Metoda u GUI prvků (třídy, co dědí od Windows.Forms.Component) Dispose vymaže grafický prvek Každý GUI element je nějaká třída, takže máme Button, TreeNode, CheckBox, ComboBox, ProgressBar, Label, atd. (viz. MSDN) Lze vytvářet i vlastní GUI prvky děděním od třídy Component (se kterými pak ale nepůjde pracovat pomocí Designeru) Do některých grafických prvků (ty, co dědí Control) lze kreslit pomocí třídy Graphics, lze tedy docílit efektu jakéhosti plátna Samostatnou kapitolou jsou pak obrázky Bitmap, Image

Co Designer produkuje WindowsForms basics Designer generuje kód na základě toho, co si naklikáte Výstupem je potom nějaký form (což je třída), která obsahuje další prvky, které jsou na něj navázány ve formě členských proměnných a jsou inicializovány, podle toho, co vyplníte v designeru Objekty tedy nejsou v žádé kolekci a nelze je inteligentne procházet Designer obsahuje všechny možné nastavitelné vlastnosti pro daný objekt a nabízí všechny eventy, které umožňuje jednoduše vyplnit přenese uživatele na místo, kde může implementovat událost Časem ten kód ale začne být dosti nepřehledný

Designer vygenerovaný kód Designer rozděluje implementaci třidy Form na několik souborů to lze pomocí klíčového slova partial deklaraci třídy tedy můžeme mít ve více souborech pomocí partial /* vytvoreni a inicializace labelu ve tride Form1 * this.label1 = new System.Windows.Forms.Label(); this.suspendlayout(); this.label1.autosize = true; this.label1.location = new System.Drawing.Point(25, this.label1.name = "label1"; this.label1.size = new System.Drawing.Size(31, 13); this.label1.tabindex = 0; this.label1.text = "Hello"; this.label1.click += new System.EventHandler(this.l... private System.Windows.Forms.Label label1;

Bitmapy a obrázky WindowsForms basics Součást System.Drawing http://msdn.microsoft.com/cs-cz/library/system. Drawing(v=vs.110).aspx Důležitá třída Color, inicializuje se pomocí ARGB bajtových hodnot Abstraktní třída Image od ní dědí/implementuje třída Bitmap Do bitmapy lze přímo kreslit a číst pixely pomocí SetPixel(), GetPixel(), což je docela asi nejrychlejší softwarová metoda v C#, pro manipulaci s pixely Třída Graphics zajišt uje kreslení do elementu, který dědí Control, objekt graphics získáme metodou CreateGraphics(); Pomocí metod třídy Graphics pak můžeme kreslit mnoho různých tvarů (GDI+)

Příklad kreslení do bitmapy per pixel Bitmap b = new Bitmap( iw, ih); /* picturebox1 je vytvoren Designerem */ picturebox1.drawtobitmap(b, new Rectangle(0,0,iw, ih) ); for (int y = 0; y < ih; y++) { for (int x = 0; x < iw; x++) { Color lc = b.getpixel(x, y); b.setpixel(x, y, Color.FromArgb(lc.R, 0, 0)); } } picturebox1.image = b;

Výsledek kreslení

Kreslení grafických primitiv Třída Graphics obsahuje optimalizované kreslení primitiv, navíc kreslí automaticky, jak je to možné DrawLine kreslí úsečku DrawArc kreslí elipsu DrawRectangle kreslí obdélník DrawPolygon polygon DrawImage obrázek Fill* vyplňuje daná primitiva Pen kreslí čáru různým stylem (tečkovaně, šrafovaně,...), různou barvou a různou tloušt kou Brush abstraktní třída reprezentující vyplňovací štětec SolidBrush jednobarevný štětec, TextureBrush vyplňuje bitmapou, GradientBrush vykresluje gradientem

Kreslení grafických primitiv //this.picturebox1.dispose(); int iw = picturebox1.width; int ih = picturebox1.height; Color c = Color.FromArgb(255, 0, 255); Pen p = new Pen(c, 8f); Graphics g = this.picturebox1.creategraphics(); g.drawrectangle(p, new Rectangle(0, 14, iw, ih-16));

Jednoduché textové dialogy Často chceme informovat uživatele k tomu slouží jednoduché textové dialogy Ty umí vyvolat statická třída MessageBox Metoda Show vytiskne text MessageBoxy jsou modální uživatel je musí odklepnout, před další prací Analogie ke Console.WriteLine() tu muzeme pouzivat i tak, ale bude se tisknout do konzole! MessageBox.Show("Hello world");

Odkazy Už umíte prakticky celou syntaxi C#, tudíž by neměl být problém rozumět dokumentaci Pěkný tutoriál najdete kupodivu na stránkách mono http://zetcode.com/gui/csharpwinforms/ Tutoriál je i na MSDN http://msdn.microsoft.com/en-us/ library/zftbwa2b(v=vs.110).aspx Samozřejmostí je referenční dokumentace http://msdn.microsoft.com/en-us/library/system. windows.forms(v=vs.110).aspx http://msdn.microsoft.com/en-us/library/system. drawing(v=vs.110).aspx

A ted vy Vykreslete vlajku EU a po kliknutí na nějakou hvězdičku se objeví nějaký text formou MessageBoxu