Kurz2 - Kapitola1

17. června 2007 v 16:02 | http://www.sweb.cz/kurz_evt/ |  Programování pro WinCE

4. Program Fifteen

Program začneme jako nový projekt typu WCE Application např. s názvem "Fifteen". Pro naši potřebu bude vyhovovat "Hello World" aplikace.

4.1 Vložení a zobrazení bitmapy

Úpravy zahájíme vytvořením obrázku hracího políčka - kostky. Obrázek se v programu uloží nejlépe ve formě jednoduché bitmapy. Bitmapy, podobně jako jiné grafické prvky - např. ikony, kurzory apod., jsou uloženy ve zdrojích - "resources".
Vložíme tedy obrázek do složky "resources". Na kartě resources klikněte pravým tlačítkem na složce Fifteen resources. Z nabídky si vyberte možnost Insert.... Jako Resource type si zvolte možnost Bitmap, a protože budeme tvořit a vkládat úplně nový obrázek potvrďte tlačítkem New.
Měl by se vám otevřít grafický editor eVT s připravenou bitmapou velikosti 48x48 bodů. Protože šířka displeje kapesních přístrojů je 240 bodů a my potřebujeme 4 políčka vedle sebe, je 4x48=192 bodů docela vyhovující zaplnění plochy. Při malování grafické předlohy kostky můžete plně popustit uzdu fantazii. Pokud však nebudete chtít políčko obdélníkového tvaru (já jsem si zvolil zakulacené rohy), je nutné jednu barvu rezervovat pro vyplnění přebytečné plochy kolem hracího políčka - kostky. V příkladu na obrázku je zvolena černá barva jako výplň kolem políčka.

obr. 34 Tvorba bitmapy kostky
Jestliže se vám podařilo úspěšně vybudit svůj výtvarný talent, můžeme přistoupit k prvnímu pokusu s vytvořeným obrázkem.
Řekněme, že se vám nelíbí standardní označení IDB_BITMAP1, které vygeneroval eVT. Ve složce Bitmap na kartě zdrojů klikněte pravým tlačítkem na položce IDB_BITMAP1 a zvolte Properties. Název změňte např. na IDB_KOSTKA.
Začneme editací hlavního zdrojového souboru Fifteen.cpp. Obrázek bude používán v programu vícekrát a poměrně často. Připravme si proto v místě globálních proměnných globální proměnnou:
// Global Variables:
HBITMAP hKostka; // Handle obrazku hraci kostky
Teď již můžeme natáhnout obrázek ze zdrojů a použít připravené Handle. Přejděte do části programu se zpracováním zprávy WM_CREATE a doplňte tam následující kód:
   // Natazeni obrazku kostky
hKostka=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_KOSTKA));
Nyní se pokusíme náš obrázek použít v programu - vykreslíme jej na ploše. Zjednodušte zpracování zprávy WM_PAINT podle následujícího vzoru:
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
TransparentImage(hdc,96,100,48,48,hKostka,0,0,48,48,RGB(0,0,0));
EndPaint(hWnd, &ps);
break;
Aby vás překladač neotravoval hlášením, že proměnná szHello je nepoužitá, vyjměte ji nebo vložte do komentáře. Při zpracování zprávy je použita funkce TrasparentImage, která přenese bitmapu do požadovaného kontextu zařízení. Prvním parametrem je právě handle cílového kontextu, následují souřadnice a velikost obrázku. Další parametr je handle zdrojového kontextu nebo bitmapy následované souřadnicemi a velikostí obrázku. Jako poslední parametr se vkládá barva, která bude považována za průhlednou. Zde je vytvořena černá barva pomocí makra RGB.
V mém případě po přeložení a spuštění se na obrazovce emulátoru objevilo toto:

obr. 35 Prázdná kostka zobrazená pomocí TransparentImage
Souřadnice umístění kostky jsem zvolil pouze odhadem, v tomto okamžiku nemají význam. Pokud bych specifikoval v posledním parametru jinou barvu než černou, ve výsledku by se zobrazily i výplňové rohy (viz další obrázek). Máte-li použitou jinou barvu jako "průhlednou", musíte doplnit její přesné číselné vyjádření.

obr. 36 Kostka s nesprávně zadanou průhlednou barvou
Máme připravený obrázek políčka - kostky, od příští lekce jej můžeme začít používat.

Co bychom si měli z této lekce zapamatovat?

  • Do zdrojů je možné vložit i jiné prvky (např. obrázky).
  • Program získá handle obrázku funkcí LoadBitmap.
  • Obrázek s "průhlednou" barvou lze zobrazit pomocí TransparentImage.
 

Buď první, kdo ohodnotí tento článek.

Nový komentář

Přihlásit se
  Ještě nemáte vlastní web? Můžete si jej zdarma založit na Blog.cz.