Počítačová grafika v Delphi – 0. díl
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Počítačová grafika v Delphi – 0. dílPočítačová grafika v Delphi – 0. díl

 

Počítačová grafika v Delphi – 0. díl

Google       Google       8. 7. 2006       23 732×

Počítačová grafika je pojem, který si většina z nás zařadí k některým produktům jako např. Paint Shop Pro apod. Málokdo z nás si je ale schopen představit, co vlastně obnáší vytvoření takové aplikace. Tento kurz se bude snažit podat základy této problematiky v návaznosti na matematickou teorii, která je v pozadí všech těchto produktů.

Tento článek se však ještě nezybývá přímo počítačovou grafikou, ale je určen pro objasnění a vyjasnění chápání některých základních pojmů a dále představuje základní úkony, které se budou v dalších dílech tohoto seriálu hojně využívat.

První, a přitom nultý díl seriálu o počítačové grafice v systému Delphi nás zavede hned na začátek jakéhokoliv programování v tomto systému. Vyjasníme si základní pojmy a ukážeme si základní, a přitom velmi důležité úkony, které je třeba zvládnout. Tento seriál není postaven jako učebnice programování v Delphi, k tomu slouží jiné, ale přeci jen považuji za nutné vyjasnit si chápání některých pojmů.

Počítačová grafika je v dnešní době často skloňovaným souslovím, ale kdo si z nás obyčejných smrtelníků dovede představit, co vše se za tím krásným skrývá?

Nulté cvičení je tedy zaměřeno na zvládnutí základních pojmů a orientace v objektově orientovaném programování. Následují základní informace o programování v Borland Delphi, které budeme v následujících cvičeních používat.

Cvičení je rozděleno na tři části:

  • OOP – objektově orientované programování – základní pojmy
  • prostředí Borland Delphi
  • první program

Objektově orientované programování

Následující odstavec by měl přiblížit pojem objektově orientovaného programování. Tento druh programování by vydal na celý semestr, pokud bychom chtěli alespoň částečně postihnout tento druh programování. Zde půjde jen o jednoduchý nástin této problematiky, protože systém Delphi je založen na objektech.

Objektově orientované programování je dalším a nutným krokem přiblížení ke skutečnosti. V minulém semestru jste se zabývali strukturálním programováním v jazyce Pascal.

Přistupme nyní k objasnění pojmu objekt. Zjednodušeně by se dalo říci, že objekt je typ, který si již při svém vytvoření (deklaraci) nese s sebou dané vlastnosti (property) a metody, pomocí kterých můžeme s daným objektem pracovat.

Uveďme jednoduchý příklad. Chceme programově reprezentovat auto (z reálného života). V Pascalu byste pravděpodobně vytvořili pole, které by na různých pozicích reprezentovalo vlastnosti jednotlivých aut, např. SPZ, barva, výrobce… Určitě vidíte potenciální problémy.

Nyní ukažme výhody objektově orientovaného přístupu.

Řekněme, že vytvoříme objekt AUTO, který bude reprezentovat auto. Jak všichni víme, každému autu je jednoznačně přiřazena SPZ. Tu bychom mohli označit jako vlastnost. Objekt AUTO má však přirozeně další vlastnosti, např. barva, typ, výrobce, značka… S vytvořením objektu AUTO budou vždy vytvořeny i jeho vlastnosti (nebudou však inicializovány).

Téměř vše v Borland Delphi je objektem. K vlastnostem objektu přistupujeme pomocí tečky, např. určíme SPZ auta, které pojmenujeme m_auto.


m_auto : AUTO;
m_auto.SPZ := 'BOI 45-45';

Jsem si plně vědom všech Vašich výtek ohledně výše uvedeneho pojmu objektově orientované programování, ale pro naši práci to úplně stačí.


Prostředí Borland Delphi je určeno k programování v jazyce Pascal (jde o klon jazyka Pascal – objektově orientovaný).

Po spuštení aplikace (Borland Delphi 7) jsou zobrazena čtyři okna aplikace. Jde o hlavní okno, Object TreeView, Object Inspector, formulář a textový editor. Více viz obrázek.

Více o práci v tomto systému bude ukázáno u příkladů, které budou následovat.

Nyní přejdeme k našemu prvnímu programu, na kterém vysvětlíme základní práci.


První program v Delphi

Základní myšlenka programu

Vytvoříme dialogové okno, které bude obsahovat jeden popisek (TLabel), tři editační políčka (TEdit) a dvě tlačítka (TButton). Po stisknutí prvního tlačítka se změní barva pozadí popisky, po stisku druhého tlačítka budou sečtena čísla z prvních dvou editačních políček a výsledek bude vypsán do třetího.

Vlastní realizace programu v prostředí Delphi

Po spuštění programu Borland Delphi se načte prostředí (viz předchozí obrázek). Nyní umístíme na formulář požadované prvky a pojmenujeme je nějakým identifikátorem. Identifikátor je jedinečné jméno, pomocí kterého se k dané komponentě přistupuje. Jinými slovy, jde o proměnnou, která zastupuje daný ovládací prvek (možná lépe komponentu).

Z lišty Komponenty, karty Standard klikneme na položku TLabel a pak na formulář. Poté klikneme na TButton a vložíme ho také do formuláře (máme tam dát dva – ještě jednou zopakujeme). Editovací políčka vložíme analogiky, s využitím komponenty TEdit. Formulář vypadá jako na obrázku.

Všimněte si, že v ObjectTreeView se zobrazí názvy (identifikátory) jednotlivých prvků formuláře. Názvy jsou implicitní. Nyní je změníme. Vždy klikneme na danou komponentu a v ObjectInspectoru a kartě Properties najdeme položmu name, která zastupuje danou komponentu. Všechny vlastnosti dané komponenty jsou na této kartě k dispozici.

Názvy změníme následovně:

Tabulka změny identifikátorů
Label1 —> Popiska
Edit1 —> Edit_x
Edit2 —> Edit_y
Edit3 —> Edit_soucet
Button1 —> pozadi_btn
Button2 —> Secti_cisla

Dále změníme vlastnost Caption (užijeme ObjectInspector—> Properties) u objektů popiska a pozadi_btn dle obrázku.

Zprávy systému Windows

Nyní si ukážeme, jakým způsobem se v Delphi posílají zprávy jednotlivým komponentám. Systém Windows ja založen na zachytávání zpráv, které vytvářejí jednotlivé části okna programu. Nebudeme se podrobně zabývat touto problematickou, ale řekneme si, že pokud např. uživatel klikne na tlačítko, je vyvolána a následně zaslána zpráva OnClick, při změně např. OnChange apod.

Veškeré zprávy, které může daná komponenta poslat a následně zpracovat, jsou obsaženy v kartě Events ObjectInspectoru.

Klikneme na tlačítko pozadi_btn a v položce OnClick dvakrát klikneme. Otevře se nám okno se zdrojovým kódem a kurzor je umístěn do vytvořené procedury. Všimněte si, že název procedury je odvozen od názvu třídy zastupující dialog (TForm1), dále od názvu (identifikátoru) dané komponenty (pozadi_btn) a navíc je přidán příznak pro obsluhovanou zprávu (Click). Samozřejmě je možné pojmenovat proceduru jinak, ale tento kód se lépe čte. Ještě musíme upozornit, že daná procedura je procedurou třídy, která zastupuje dané dialogové okno (TForm1). Proto na začátku kódu bude přidána deklarace procedury (viz obrázek).

Nyní pomocí kódu změníme pozadí prvku popisek. Následující kód přidáme do těla výše zmíněné procedury.


popiska.Color := clWhite;
    // clWhite - předdefinovaná barva - vždy začíná cl

Využijeme tzv. IntelliSense (viz obrázek), která zobrazí dostupné vlastnosti a metody daného objektu. Připomínáme, že k metodám a vlastnostem objektu přistupujeme přes tečku („.“).

Následující obrázek ukazuje špatné použití tečky u objektu (v tomto případě vlastnosti), který nemá další členění. Program hned vypíše chybu v dolní části okna.

Obrázek ukazuje pokus o další řetězení objektu popiska. Vlastnost Color jsme vyvolali pomocí tečky, ale další členění už není. Zmínili jsme se o tom proto, že v případě neznalosti struktury objektu můžeme pomocí řetězení (užití tečky jako odkazu) usuzovat na strukturu objektu.

Kompilace programu

Nyní program musíme přeložit, užívá se spíše termínu zkompilovat. Použijeme ikonu, která připomíná Play na přehrávači, popř. z menu Run.

Po přeložení zdrojového kódu do spustitelného programu (v případě, že neobsahuje kód chybu), je program spuštěn (viz obrázek).

Vyzkoušíme kliknout na tlačítko Zmen pozadi labelu, zda se změní pozadí.

Práce s editovacími políčky – TEdit

Nejprve upravíme editovací políčka. Ve vlastnosti Text každého EditBoxu smažeme řetězec, který se zobrazuje jako text (viz obrázek).

Nyní přistoupíme ke zpracování zprávy OnClick na tlačítku Secti_cisla. Tlačítko vybereme a v ObjectInspectoru na kartě Events najdeme zprávu OnClick a v příslušné položce dvakrát klikneme. V té chvíli Delphi vytvoří novou proceduru, která bude pojmenována pomocí identifikátoru objektu a zprávy, kterou obsluhujeme – Secti_cislaClick (viz obrázek).

Nyní přejděme ke zdrojovému kódu. Nejprve připomeňme, co vše musíme udělat:

  1. Získat text z prvních dvou EditBoxů
  2. Převést text na číslo, abychom pak mohli provést součet těchto čísel
  3. Sečíst čísla a převést je na text, pro vypsání v třetím EditBoxu
  4. Vypsat text do třetího edit boxu

Pro získání textu z EditBoxu využijeme jeho vlastnosti Text. Dále je nutné převést tento text na číslo. K tomu je určena funkce Val(text,cislo,chyba). Význam jednotlivých proměnných vyplyne z celkového zdrojového kódu. Jen se krátce zastavme u třetího parametru, kvůli kterému vlastně chceme použít tuto funkci, a ne jinou, např. StrToInt. Třetí parametr (chyba) vrací nulovou hodnotu, pokud konverze proběhla bez chyby. V opačném případě vrací pozici, na které se chyba vyskytla a kde se provádění převodu zastavilo. Pro získání řetězce z čísla slouží funkce STR(cislo,text).

Následuje zdrojový kód dané procedury, který je okomentován.



{*******************************************************}
// procedura ziska z editovacich policek cila, secte je
// a vypise do tretiho editovaciho boxu }


procedure TForm1.Secti_cislaClick(Sender: TObject);
var chyba:integer; // lokalni promenne - deklarace
    x,y:real;
    s:string;
begin
    // pomoci VAL prevedu retezec z editboxu na cislo
    VAL(Edit_x.Text,x,chyba);
    // treti parametr obsahuje cislo pripadne chyby
    VAL(Edit_y.Text,y,chyba);
   
    // pomoci STR prevadim cislo na retezec
    STR(x+y:10:5,s);
       // 10 - pocet mist, 5 - pocet desetinnych - z pascalu
   
    // do tretiho Editboxu vypise retezec
    Edit_soucet.text := s;
end;

Nyní už můžeme program přeložit a vyzkoušet.


Úkol

Vytvořte obdobný program, který bude měnit pozadí jednotlivých komponent daného formuláře a např. ještě nápisy na nich.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
Autor byl doktorandem na ÚM FSI VUT v Brně, programuje v C++, C#, využívá web. tech. HTML, CSS, XML, XSLT, JavaScript, ASP.NET.. Vyučuje Počítačovou geometrii a grafiku, Matematické výpočty pomocí Maple.

Nové články

Obrázek ke článku Stavebnice umělé inteligence 1

Stavebnice umělé inteligence 1

Článek popisuje první část stavebnice umělé inteligence. Obsahuje lineární a plošnou optimalizaci.  Demo verzi je možné použít pro výuku i zájmovou činnost. Profesionální verze je určena pro vývojáře, kteří chtějí integrovat popsané moduly do svých systémů.

Obrázek ke článku Hybridní inteligentní systémy 2

Hybridní inteligentní systémy 2

V technické praxi využíváme často kombinaci různých disciplín umělé inteligence a klasických výpočtů. Takovým systémům říkáme hybridní systémy. V tomto článku se zmíním o určitém typu hybridního systému, který je užitečný ve velmi složitých výrobních procesech.

Obrázek ke článku Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Vedení týmu v oboru informačních technologií se nijak zvlášť neliší od jiných oborů. Přesto však IT manažeři čelí výzvě v podobě velmi rychlého rozvoje a tím i rostoucími nároky na své lidi. Udržet pozornost, motivaci a efektivitu týmu vyžaduje opravdu pevné manažerské základy a zároveň otevřenost a flexibilitu pro stále nové výzvy.

Obrázek ke článku Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Za poslední rok se podoba práce zaměstnanců změnila k nepoznání. Především plošné zavedení home office, které mělo být zpočátku jen dočasným opatřením, je pro mnohé už více než rok každodenní realitou. Co ale dělat, když se při práci z domova ztrácí motivace, zaměstnanci přestávají komunikovat a dříve fungující tým se rozpadá na skupinu solitérů? Odborníci na personalistiku dali dohromady několik rad, jak udržet tým v chodu, i když pracovní podmínky nejsou ideální.

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý