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

UPC překopli páteřní kabel. V Brně i druhý den nejede internet ani kabelovka

UPC překopli páteřní kabel. V Brně i druhý den nejede internet ani kabelovka

** V Brně byl velký výpadek služeb UPC ** Důvodem je překopnutý páteřní kabel ** V některých lokalitách služby stále nefungují

5.  12.  2016 | Jakub Čížek | 104

17 expertek Microsoftu předpovědělo rok 2027. Splní se alespoň něco?

17 expertek Microsoftu předpovědělo rok 2027. Splní se alespoň něco?

** Zmizí klasické vyhledávače ** Budeme programovat buňky ** Kvantové počítače překonají šifry

6.  12.  2016 | Jakub Čížek | 36

11 tipů na dobrý stolní počítač: od základu po herní mašiny

11 tipů na dobrý stolní počítač: od základu po herní mašiny

** Postavte si stolní počítač! Máme pro vás 11 vzorových sestav s rozpisem komponent ** Většina tipů cílí na hráče, věnujeme se ale i základnímu PC a počítačům na střih videa ** Nadělte si nový počítač třeba pod stromeček

5.  12.  2016 | Adam Kahánek | 74

Nejlepší notebooky nad 20 tisíc: poradíme, které teď chcete

Nejlepší notebooky nad 20 tisíc: poradíme, které teď chcete

** V notebooku s cenou nad 20 tisíc nesmí chybět kvalitní displej a rychlé úložiště ** Za dalších deset tisíc můžete dostat navíc styl nebo výkonnější komponenty ** Vybírat můžete z různých velikostí i konstrukcí

8.  12.  2016 | Stanislav Janů | 85


reklama