Přejít k navigační liště

Zdroják » Různé » Silverlight 3: ukázky novinek pro vývojáře

Silverlight 3: ukázky novinek pro vývojáře

Články ‐ ‐ Různé ‐

Před nedávnem Microsoftem vydaný Silverlight 3 přinesl několik výrazných novinek, ať už to jsou různá vylepšení grafických operací nebo možnost spouštět Silverlight aplikace mimo prohlížeč (out of browser). V článku se na některé z těchto novinek podíváme prakticky, v příkladech a ukázkách.

Seznam novinek v nedávno uvolněném nástroji Silverlight 3 již byl shrnut na MSDN blogu. Pojďme si nyní ukázat několik praktických ukázek vybraných novinek z pohledu programátora.

Nástroje pro vývoj Silverlight 3 aplikací

Všechny nástroje, které potřebujete pro vývoj Silverlight 3 aplikací, jsou stejně jako u předchozích verzí zdarma dostupné na serveru http://silver­light.net/. V první řadě si je třeba nainstalovat libovolnou verzi Visual Studia 2008 SP1 nebo Visual Web Developer 2008 SP1, a dále pak Microsoft Silverlight 3 Tools for Visual Studio 2008 SP1. Pokud s platformou .NET teprve začínáte, mužete si instalaci a konfiguraci počítače ulehčit pomocí Web Platform Installer

Silverlight 3 SB

Grafika a animace

Díky využití hardwarové akcelerace grafiky bylo možné přidat nové vlastnosti práce s grafikou, aniž by se neúměrně zvyšovala zátěž CPU. Pokud chcete využít GPU, stačí nastavit parametr EnableGPUAcce­leration objektu Silverlight ve webové stránce na hodnotu true.

<object data="data:application/x-silverlight," type="application/x-silverlight-2" width="100%" height="100%">
…
<param name="EnableGPUAcceleration" value="true" />
…
</object>

Pokud využíváte ASP.NET můžete tuto vlastnost nastavit u serverového ovládacího prvku asp:Silverlight, který má na starosti vygenerování příslušného HTML pro vložení objektu Silverlight do stránky.

<asp:Silverlight ID="Silverlight1" EnableGPUAcceleration="true" runat="server" Source="~/ClientBin/PerspectiveTransform.xap" MinimumVersion="3.0.40307.0" Width="100%" Height="100%" />

3D efekty

Pomocí vlastnosti Projection můžete aplikovat 3D efekty na libovolný objekt, který je odvozen od objektu UIElement. Standardně je k dispozici PlaneProjection, ale můžete si samozřejmě vytvořit vlastní 3D efekt. Následující kód animuje vlastnost RotationX a tím vytváří efekt otáčení obrázku v prostoru. Animace se spouští kliknutím na obrázek.

<UserControl x:Class="PerspectiveTransform.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     Width="400" Height="300">
    <UserControl.Resources>
        <Storyboard x:Name="Storyboard1">
                <DoubleAnimation
                     From="0"
                     To="360"
                     Duration="00:00:02"
                     Storyboard.TargetName="img"
                    Storyboard.TargetProperty="(UIElement.Projection).(RotationX)"
                    RepeatBehavior="Forever"
                     BeginTime="00:00:00" />
              </Storyboard>
    </UserControl.Resources>
    <Grid Background="White">
        <Image Name="img" Source="DSCN0302.JPG"
 MouseLeftButtonDown="Image_MouseLeftButtonDown">
            <Image.Projection>
                <PlaneProjection CenterOfRotationX="100" />
            </Image.Projection>
        </Image>
    </Grid>
</UserControl>

private void Image_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Storyboard1.Begin();
}

Pixel Shader

Při práci s bitmapou lze nově využívat Pixel Shader. Tyto efekty si můžete vytvářet sami, např. pomocí HLSL, nebo využít některé předdefinované.

<Image x:Name="img2"
                Source="DSCN0308.JPG"
                Height="200"
                Canvas.Top="250"
               Canvas.Left="50">
            <Image.Effect>
                <BlurEffect Radius="10"></BlurEffect>
            </Image.Effect>
</Image>

Animace

Zásadní novinkou u animací jsou tzv. Animation Easing. Základní animace v podstatě jen mění hodnotu v čase. Rychlost této změny je typicky konstantní nebo se mění lineárně. Animation Easing je sada objektů, které ovlivňují průběh animace podle různých křivek. Umí tak vytvořit například efekt skákajícího míčku nebo prokluzu auta při rozjezdu do kopce. Těchto funkcí je celkem 11 a jejich popis, včetně grafu průběhu, najdete v dokumentaci nebo ve screencastu. Efekt lze aplikovat na začátek, konec nebo začátek i konec animace pomocí vlastnosti EasingMode. U některých Animation Easing můžete ještě ovlivňovat průběh pomocí parametrů specifických pro danou funkci, např. počet kmitů u ElasticEase.

Následující kód simuluje proklouznutí auta při rozjezdu do kopce a zastavení v kopci.

<UserControl x:Class="AnimationEasing.Back"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     Width="500" Height="200">
    <UserControl.Resources>
        <Storyboard x:Name="back">
            <DoubleAnimation From="90" To="350" Duration="0:0:10"
                    Storyboard.TargetName="BlueCar"
                    Storyboard.TargetProperty="(Canvas.Left)">
                <DoubleAnimation.EasingFunction>
                    <BackEase EasingMode="EaseInOut" Amplitude="0.6"></BackEase>
                </DoubleAnimation.EasingFunction>
            </DoubleAnimation>
            <DoubleAnimation From="170" To="40" Duration="0:0:10"
                    Storyboard.TargetName="BlueCar"
                    Storyboard.TargetProperty="(Canvas.Top)">
                <DoubleAnimation.EasingFunction>
                    <BackEase EasingMode="EaseInOut" Amplitude="0.6"></BackEase>
                </DoubleAnimation.EasingFunction>
            </DoubleAnimation>
        </Storyboard>
    </UserControl.Resources>
    <Canvas x:Name="LayoutRoot" Background="White">
        <Image Name="BlueCar"
                Width="60"
               Canvas.Top="170"
                Canvas.Left="90"
                Source="BlueCar.png"
                MouseLeftButtonDown="Image_MouseLeftButtonDown" RenderTransformOrigin="0,1" >
            <Image.RenderTransform>
                <TransformGroup>
                    <RotateTransform Angle="-24"/>
                </TransformGroup>
            </Image.RenderTransform>
        </Image>
    </Canvas>
</UserControl>

Práce s daty

Databinding

Co velmi chybělo u předchozích verzí Silverlight, byla možnost vytvořit datovou vazbu (Databinding) mezi objekty uživatelského rozhraní.  

<Canvas>
        <Slider Canvas.Top="10" Width="400" Minimum="0" Maximum="400" Value="200" x:Name="widthValue"/>
        <Ellipse Canvas.Top="30" Height="100" Fill="Blue" Width="{Binding ElementName=widthValue, Path=Value}" />
</Canvas>

Save File Dialog

Další z novinek, která výrazně usnadňuje práci s daty, je možnost ukládat soubory na lokálním počítači, které pak mohou být přímo generovány Silverlight aplikací na straně klienta. Dřívější verze umožňovala ukládat informace pouze do chráněného úložiště Isolated Storage.

Silverlight 3 SB 2

Přístup k lokálnímu souboru získáme pomocí metody OpenFile objektu SaveFileDialog.

SaveFileDialog sfd = new SaveFileDialog();
bool? sf = sfd.ShowDialog();
if (sf == true)
{
    using (Stream fs = (Stream)sfd.OpenFile())
   {
      …
   } 
}

Out of Browser aplikace

Online aplikace mají řadu výhod, např. vždy pracujete s aktuální verzí, nemusíte nic instalovat atd. Ale mají také jeden zásadní problém. Nemáte-li připojení k internetu, nemáte také aplikaci. Vytvoření Out of Browser aplikace v podstatě spočívá jen v povolení vlastnosti Enable runnig application out of browser ve vlastnostech projektu a případné nastavení vlastností OOB. Informace se pak zapíší do souboru OutOfBrowserSet­tings.xml.

Silverlight 3 SB 3

Vlastní instalace aplikace se provede kliknutím pravým tlačítkem myši v okně aplikace a zvolením volby pro instalaci. (Vlastnosti „Out Of Browser“ se věnoval před nedávnem článek Je Silverlight 3 konkurencí pro Adobe AIR – pozn.red.)

Silverlight 3 SB 4

Závěr

Výše uvedené ukázky samozřejmě nepokrývají všechny novinky v Silverlight 3, novinek v novém Silverlightu je podstatně více, ale věřím, že se mi podařilo shrnout alespoň ty, které jsou z mého pohledu nejzajímavější.  Více se budete mít možnost dozvědět na konferenci Webexpo 2009, kde bude prostor nejen pro přednášku, ale i dotazy a ukázky reálně nasazených aplikací využívajících Silverlight 3.


Autorem článku je Štěpán Bechynský, specialista pro vývojové nástroje ve společnosti Microsoft v České republice. Informace pro vývojáře také najdete na blogu odborníků z českého Microsoftu.

Komentáře

Odebírat
Upozornit na
guest
6 Komentářů
Nejstarší
Nejnovější Nejvíce hlasů
MD

Objevili Ameriku…

pas

Pro přehled novinek v Silverlightu 4 sledujte včas web Adobe. ;-)

David

Jasně, to může napsat jedině člověk, který o Silverlightu neví vůbec nic.

pas

Ale jděte. :)

David

Silverlight opět ukazuje jak progresivní a silná technologie to je. Za necelé tři roky se vypracovala k plné konkurenci k technologii Flash.

pas

Až na práci s kamerou, mikrofonem a pár dalších drobností, že? Ale to určitě brzy doženou. A pak si můžou vzít specifikaci Flashe 11, který mezitím vznikne, a pokračovat dál. Jsou šikovní. :)

ISO, WIN, nebo MAC? Válka o kódování češtiny na webu

Kdo se webem zabýval na přelomu tisíciletí, zná ten pohled: stránka se načte a místo české věty se na ní objeví změť znaků jako ą, ľ a ». Nebyla to chyba monitoru ani písma. Byl to následek války, která se na českém internetu vedla po dlouhá léta. Šlo v ní o zdánlivou maličkost: jak do jednoho bajtu vměstnat písmeno „ř“. Podívejme se, kdo v ní proti komu stál, proč ji nešlo vyhrát a jak skončila.

Začal jako projekt studentů Matfyzu. Český BIRD dnes pomáhá řídit provoz na největších internetových uzlech

Internet drží pohromadě i díky místům, kde se propojují sítě poskytovatelů připojení, cloudů nebo videoslužeb. S předáváním informací o tom, kudy jsou jednotlivé sítě dostupné, jim ve Frankfurtu, Londýně i Amsterdamu pomáhá český BIRD. Začal jako studentský projekt, po první verzi z roku 2000 léta spíš dřímal a soustavný vývoj obnovil až CZ.NIC. Ve své úloze uspěl tak výrazně, že největší uzly nakonec začaly platit vývoj konkurenčního softwaru, aby nebyly závislé jen na něm.