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

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       19 105×

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.

Reklama
Reklama

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 Nový IT hráč na českém trhu

Nový IT hráč na českém trhu

V roce 2015 otevřela v Praze na Pankráci v budově City Tower své kanceláře společnost EPAM Systems (NYSE:EPAM), jejíž centrála se nachází v USA. Společnost byla založená v roce 1993 a od té doby prošla velkým vývojem a stále roste.

Reklama
Reklama
Obrázek ke článku České Radiokomunikace opět hledají nejlepší nápady pro internet věcí

České Radiokomunikace opět hledají nejlepší nápady pro internet věcí

České Radiokomunikace (CRA) pořádají druhý ročník CRA IoT Hackathonů. Zájemci z řad vývojářů a fanoušků moderních technologií mohou změřit své síly a během jediného dne sestrojit co nejzajímavější funkční prototyp zařízení, které bude komunikovat prostřednictvím sítě LoRa. CRA IoT Hackathony se letos uskuteční ve dvou fázích, na jaře a na podzim, v různých městech České republiky. Jarní běh se odstartuje 31. března v Brně a 7. dubna v Praze.

Obrázek ke článku Cloud computing je využíván stále intenzivněji

Cloud computing je využíván stále intenzivněji

Využívání cloud computingu nabývá na intenzitě. Jen v letošním roce vzroste podle analytiků trh se službami veřejného cloudu o 18 %, přičemž o téměř 37 % vzrostou služby typu IaaS. Růst o více než pětinu pak čeká služby poskytování softwaru formou služby, tedy SaaS. Aktuálním trendům v oblasti využívání cloudu se bude věnovat konference Cloud computing v praxi, která se koná 23. března. 2017 v pražském Kongresovém centru Vavruška na Karlově náměstí 5.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý