reklama

Staňte se programátorem: Linuxové efekty levou zadní

Linuxové grafické desktopy se chlubí poutavými efekty, některé z nich lze ale velmi snadno napodobit i na Windows. Dnes si takové efekty napíšeme v programovacím jazyku C#.

V dnešní části si s námi budete moci vytvořit jednoduché animační efekty oken, kterými se chlubí například mnohé „FX“ desktopy z Linuxu včetně oblíbeného a téměř všudypřítomného Compizu – dříve známého jako Beryl.

Konkrétně se zaměříme na tři efekty. První vytvoří „klikací“ miniatury oken a umístí je na plochu. Pokud nad miniaturu najedete myší, miniatura se zvýrazní, a pokud na ni kliknete, zobrazí se odpovídající okno programu. Druhý efekt pro změnu vytvoří animaci, při které se okno zmenší a třetí efekt bude postupně zvětšovat průhlednost okna, dokud zcela nezmizí.

Klepněte pro větší obrázek
Zkušební okna se kterými si můžete naše efekty vyzkoušet
Přeložený program najdete na konci článku
Zde je jediným efektem akcelerované prostředí Vista Aero

V dnešním díle se naučíme základy, příště se pak podíváme na kód konkrétních efektů. Efekt seřazených miniatur a postupně se zmenšujících oken vytvoříme pomocí skutečných miniatur formuláře. Efekt průhlednosti pak vytvoříme prostým nastavením vlastnosti okna.

První efekt: seřazení a vytvoření klikacích miniatur

Klepněte pro větší obrázek
Okna vypadají a chovají se jako ikony

Druhý efekt: zmenšení

Klepněte pro větší obrázek  Klepněte pro větší obrázek  Klepněte pro větší obrázek
Pokud budete postupně zobrazovat menší a menší miniaturu okna, vznikne pěkný efekt

Třetí efekt: zmizení

Klepněte pro větší obrázek  Klepněte pro větší obrázek  Klepněte pro větší obrázek
Pokud budete průhlednost měnit spojitě, ve smyčce nebo pomocí časovače, vznikne pěkný mizící efekt

Základní dovednosti

Před tím, než začneme psát efekty okna, měli bychom se seznámit s několika základními funkcemi a vlastnostmi okna a práce s obrázky:

Pro zobrazení okna použijeme metodu Show:

Form f = new Form();
f.Show();

Pro skrytí okna použijeme metodu Hide:

f.Hide();

Pro nastavení rozměru okna slouží vlastnost Size, které přiřadíme instanci třídy System.Drawing.Size představující nové rozměry okna:

Form f = new Form();
f.Size = new Size(200,400); // šířka 200, výška 400
f.Show();

K nastavení pozice okna slouží vlastnost Location, které je nutné přiřadit instanci struktury System.Drawing.Point představující bod, kam bude umístěn levý horní roh okna.

Form f = new Form();
f.Location = new Point(0,0); // Posune okno do levého horního rohu obrazovky
f.Show();

Nastavení průhlednosti okna

Pro nastavení průhlednosti okna použijeme vlastnost Opacity, které přiřadíme číslo datového typu double v intervalu <0,1> představující stupeň průhlednost okna. Hodnota 0 představuje zcela průhledné okno, zatímco hodnota 1 představuje okno neprůhledné.

Form f = new Form();
f.Show();
f.Opacity = 0.5; // Nastaví poloprůhledné okno

Získání obrazu okna

Pro získání snímku okna je určena metoda DrawToBitmap třídy Form, která jako argument očekává odkaz na instanci třídy System.Drawing.Bitmap představující bitmapu do které bude obsah okna zakreslen. Druhý argument je typu System.Drawing.Rectangle a představuje výseč bitmapy, do které bude obrázek zakreslen.

Form f = new Form();
f.Show();
Bitmap obr = new Bitmap(f.Width, f.Height);
f.DrawToBitmap(obr, new Rectangle(0,0, f.Width,f.Height);
obr.Save(@“C:\obrazek.bmp“);

Pro zobrazení obrázku slouží komponenta PictureBox. K nastavení obrázku, který se v této komponentě zobrazí, slouží vlastnost Image, které je nutné přiřadit odkaz na instanci třídy System.Drawing.Image představující daný obrázek.

Form f = new Form();
PictureBox p = new PictureBox();
f.Controls.Add(p); // Přidá na formulář PictureBox
// Nahraje obrázek do paměti a zobrazí jej v komponentě PictureBox
p.Image = Image.FromFile(@“C:\img.bmp“);
p.Show();

Vytvoření miniatury

Pro získání zmenšeniny obrázku slouží metoda GetThumbnailImage třídy System.Drawing.Image představující obrázek. Metoda jako první dva argumenty očekává novou šířku a výšku obrázku a jako třetí argument je nutné uvést delegát na metodu, která bude zavolána v případě vyvolání chyby při změnách rozměrů obrázku.

bool Chyba()
{
  MessageBox.Show(“Nastala chyba při manipulaci s obrázkem“);
  return false;
}

Image UpravRozmerObrazku(Image i, int vyska, int sirka)
{
  try
  {
    return i.GetThumbnailImage(vyska, sirka,
    new Image.GetThumbnailImageAbort(Chyba), IntPtr.Zero);
  }
  catch
 
{
    return null;
  }
}


Dnes jsme si ukázali tři efekty, které sice na první pohled vypadají velmi jednoduše, v reálném nasazení jsou ale velmi pěkné a s naprostým minimem programování. Nakonec si můžete program jako vždy vyzkoušet. Z Linuxu jsme se vrátili na Windows (ale v Monu program také spustíte, i když efekty pravděpodobně nebudou fungovat, zobrazí se pouze samotná okna), ke spuštění tedy budete potřebovat platformu Microsoft .NET Framework.

Samozřejmě nechybí ani zdrojový kód, který je upravený pro bezplatné vývojové prostředí Microsoft Visual C# 2008 Express Edition.

Témata článku: Programování, Form, Catch

28 komentářů

Nejnovější komentáře

  • Antibuntu 13. 2. 2009 22:23:02
    ROFL :-D
  • Jerome McElroy 13. 2. 2009 18:58:16
    Dik za radu. Vo Windowse je AA defaultne zapnutý a tak ma nenapadlo to...
  • Jan Tomášek 13. 2. 2009 12:49:39
    pche klikaci
reklama
Určitě si přečtěte

Microsoft: Zbavte se už konečně zastaralých a děravých Windows 7

Microsoft: Zbavte se už konečně zastaralých a děravých Windows 7

** Microsoft pomalu začíná kritizovat svůj nejpopulárnější OS ** Chce konečně dostat podniky na Desítky ** Bezpečnostní podpora Sedmiček vydrží ještě necelé tři roky

17.  1.  2017 | Jakub Čížek | 406

Vyzkoušeli jsme FM štěnici: Když si vtipálci hrají na pirátské rozhlasové vysílání

Vyzkoušeli jsme FM štěnici: Když si vtipálci hrají na pirátské rozhlasové vysílání

** Dnes žádnou elektroniku programovat nebudeme ** Štěnice totiž funguje sama o sobě ** Stačí připojit baterii a naladit frekvenci

Včera | Jakub Čížek | 14

8 produktů, o kterých byste neřekli, že nesou značku Apple

8 produktů, o kterých byste neřekli, že nesou značku Apple

** Věděli jste, že Apple vyvinul celkem 45 modelů tiskáren? ** ** Monitor na výšku, plotter nebo herní konzole - to vše měl Apple ve své nabídce ** Většinu z těchto produktů pohřbil Steve Jobs

19.  1.  2017 | Stanislav Janů | 42

Umělá inteligence dokáže ze snímků srdce předpovědět, kdy zemřete

Umělá inteligence dokáže ze snímků srdce předpovědět, kdy zemřete

** Strojové učení lze skvěle použít pro vylepšení modelů pro předpověď srdečních komplikací ** Nová technologie umožňuje přesněji určit rizikové pacienty ** Dřívější diagnostika může díky včasně léčbě do budoucna zachránit životy

21.  1.  2017 | Karel Javůrek | 7


Aktuální číslo časopisu Computer

99 nejlepších programů pro váš počítač

Zvykejte si na umělou inteligenci

Velké testy PC zdrojů a gamepadů

Alternativní zdroje energie

reklama
reklama