Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Delphi
Komponenta DXImageList
10. ledna 2001, 00.00 | Popis velice užitečné komponenty pro Delphi. V předcházejících článcích jste se mohli dočíst o různých tipech pro Delphi používajích právě tuto komponentu..
Dnes si povíme něco víc o komponentě DXImageList z DelphiX komponent.Komponenta sama o sobě má pouze čtyři vlastnosti a žádné události, přesto je to jedna z nejpoužívanějších komponent z této palety (hned po DXTimer a DXDraw). Z prvé snad ještě zopakuji, jakou má tato komponenta funkci. Jedná se v podstatě o rozšířenou komponentu ImageList (paleta Win32) pro DirectX.
Do komponenty se nahrávají obrázky, abychom je mohli dále pomocí různých funkcí vykreslovat.
Vlastnosti
Nejprve si tedy stručně probereme vlastnosti.
- První vlastnost je DXDraw, která určuje, na jaký surface se budou obrázky kreslit. Pokud jste tedy vytvořili projekt podle nějakého z předchozích návodů používající DXImageList a na výsledném programu jste nic neviděli, mohlo to být právě tím, že jste zapomněli nastavit právě vlastnost DXDraw.
- Třetí (druhou jsem naschvál překočil, jelikož je nejpodstatnější, a proto ji nechávám na konec) je Name, která určuje jméno komponenty (standartně DXImageList1) a poslední vlastností je Tag, která je pouze pro potřebu programátora, a její změna nemá na komponentu vůbec žádný vliv.
- A konečně druhá vlastnost je Items, ve které jsou uloženy všechny obrázky, a jejich další vlastnosti. Zkuste si tedy kliknout na
vlastnost Items, poté na tři tečky napravo, a otevře se editační okno podobné tomuto:
Ve vašem případě zde asi ale nebudou žádné položky. Nevadí, zkuste si nějakou přidat kliknutím na tlačítko. Nová položka se ihned zobrazí pod jménem TPictureCollectionItem a v Object Inspektoru se objeví nových devět vlastností.
Nyní si popíšeme pouze čtyři, jelikož ostatní nejsou tak důležité, a můžeme je proto nechat tak, jak jsou.
- Jak víme, name určuje jméno položky a umožní nám nejen snažší orientaci mezi ostatními položkami, ale i snazší kreslení. Při kreslení totiž můžeme k položkám přistupovat podle čísla ( DXImageList1.Items[x].), nebo podle jména, a to DXImageList1.Items.Find(x). což je většinou lepší a přehlednější.
- Další vlastnost je Picture, ve které je uložen samotný obrázek. Pokud zase kliknete na tři tečky vedle Picture, nabízí Open picture dialog otevření všech standardně podporovaných formátů, pokud však budete kreslit na DXDraw, zobrazí se Vám pouze obrázky bmp.
- Jestli chcete mít obrázek na nějakém místě průhledný, nastavte vlastnost Transparent na true,
- a vlastnost TransparentColor na barvu, kterou chcete mít průhlednou.
Problém ovšem nastane, pokud počet položek překročí určitou hranici, a v obrázcích nastane zmatek. Nejenže se z rostoucím počtem obrázků zvětšuje velikost exe souboru, ale i rychlost kompilování. Samozřejmě je zde ještě jedna možnost, a to vytvořit si soubor dxg, který obsahuje položky DXImageListu a poté jej např. v proceduře MainForm.OnCreate nahrát do DXImageListu pomocí DXImageList1.Items.LoadFromFile('obrazky.dxg'); Tento soubor však musíte nejprve někde vytvořit, a proto je zde Editor pro dxg soubory. Stáhnout si jej můžete zde. Po stažení a spuštění se objeví okno podobné tomuto (opět jsem raději už nahrál dxg soubor, aby byly všechny funkce aktivní):
Jednotlivé funkce jsem snad popsal dost srozumitelně. Pokud tedy ještě nemáte žádný soubor dxg, vytvořte si nový (File/New) a nahrajte si do něj nějaký obrázek (File/Import). Pokud nyní dvojkliknete na položku v levém sloupci, nebo Edit/Preferences, objeví se dialog, ve kterém si můžete nastavit všechny vlastnosti vybraného obrázku, jako v Object Inspektoru. Viz obrázek:
Další výhodou editoru je, že můžete obrázek vložit rovnou ze schránky, a nemusíte jej mezitím ukládat. Nakonec si soubor uložte a jak jsem již napsal na začátku, přidejte do proc. MainForm.OnCreate DXImageList1.Items.LoadFromFile('obrazky.dxg'); Pokud již máte projekt vytvořený i s obrázky v DXImageListu a nechce se Vám tvořit nový soubor, můžete si pomocí DXimageList.Items.SaveToFile('obrazky.dxg') soubor uložit a následně editovat.
Diskuse k článku
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007