Upload
trinhtuyen
View
218
Download
5
Embed Size (px)
Citation preview
ÚVOD..................................................................................................................................................................... 3
............................................................................................................... 4
? ................................................................................................................................... 7
........... 9
................................. 12
........................................ 13
.......................... 28
..................................... 31
.............. 44
............................ 55
............ 58
.......................... 58
.................................... 59
Microsoft® Silverlight™Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
Úvod sa rozvíjajúcich projektov v dejinách udstva. Od jeho pôvodnej
ujú rozdiel medzi skom komforte. Jedným
z významných hrátrh prehliada
prehliada nú úrove prehliadarlight je kompletne postavený na vektorov
vybudovanú ve mi silnú pozíciu spolo nos Adobe so svojim produktom Flash (predtým Macromedia), v konkuren nom boji
Pri uvádzaní novej technológie postupovala firma Microsoft dos netradi s finálnou verziou Silverlight 1.0 predstavila aj alfa verziu 1.1. Zatiajazyk JavaScript, v pripravovanej verz .NET jazyky.
prezentácií vrátane multimediálnych na klientskych po ítavývoja mala táto technológia ozna o nazna uje, zámer Microsoftu prenies
as
Jedným zo základných pilierov Silverlightu je znauje popisova textový obsah, grafický bitmapový a vektorový obsah a multimediálny obsah. Jazyk
ná logika, to znamená obsluha udalostí (zavedenie stránky, zatla enie tla
nú logiku programovajazykoch
Pre vývoj prezenta nástroje z rodiny bu komplexný nástroj Microsoft Expression Studio, alebo
nej vrstvy) Microsoft Expression Design (návrh vektorovej a bitmapovej grafiky)
3Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
Predstavovanie technológie Silverlight by sme mohli za a tradi ne popisom architektúry, spôsobu implementácie a nazna
neme webovou televíziou, konkrétne Mediapreview TV:
Príklad prehrávania videa prostredníctvom Silverlightu
Ve t prezenta ného rozhrania nového opera
Simulátor opera
4
5Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
o budeme potrebova ?
Silverlight
7Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
Rodina nástrojov Microsoft Expression Microsoft v súvislosti s uvedením novej technológie Silverlight dal k dispozícii vývojárom produkty z rodiny Expresion. Vývojári si pod bukomplexný balík pre dizajnérov, tvorcov webov a grafiky pod názvom Microsoft Expression Studio, alebo jednotlivé asti, ktoré tento balík tvoria:
Microsoft Expression Web Microsoft Expression Blend Microsoft Expression Design Microsoft Expression Media
Microsoft Expression Web uje tvorbu kvalitných webových stránok, spí, preto
.
Microsoft Expression Blend je flexibilné a produktívne grafické vývojové prostredie. Pomáha pri tvorbe moderných a vizuálne prepracovaných aplikácií s interaktívnou podporou 3D zobrazovania a prehrávania multimédií. aj 3D zobrazením.
Microsoft Expression Design obsahuje podporu vektorovej a bitmapovej grafiky a obidve tieto oblasti spája v jednom prostredí. Ako príklad spojenia grafický návrh tla vektorové tla idlo do Windows Vista a zárove bitmapové tla idlo pre webovú aplikáciu. Tento nástroj je len sú as ou integrovaného balíka Expression Studio a pravdepodobne sa nebude dodáva samostatne.
Microsoft Expression Media je profesionálny katalogiza ný nástroj pre dávkové spracovanie, úpravy a prevody a hlavne pokro ilé vytváranie katalógov multimediálnych súborov. Podporuje viac ako sto
né profesionálne multimediálne formáty uje aj import konkuren ných katalógov multimediálneho obsahu.
Rodina nástrojov Microsoft Expression
9Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
Microsoft Expression Studioo
vizuálne prí
60 d na adrese :
Microsoft Expression Blend
nej
aj opa ne a ru ne
Microsoft Expression Blend 2
10
Vlastnos Silverlight 1.0 Silverlight 1.1
11Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
Architektúra Architektúra platformy Silverlight 1.0 je rozdelená na dve základné asti: Prezenta ná vrstva obsahuje
ského rozhrania, a interakciu renderovanie vektorovej a bitmapovej grafiky,
textový výstup, animácie a prezentáciu multimediálneho obsahu vo formáte WMA,VC1 a MP3. Interakcia om zahr
úrove aj DOM API (Document Object Model) pre Silverlight a XAML. Druhou vrstvou je ný komponent pre internetový prehliada .
vývojári javascript. V základe pracujú s nú prezenta nú
i
Architektúra prezenta nej vrstvy Silverlight
12
XAML XAML je nový druh zna kovacieho jazyka pre tvorbu aplika ného rozhrania. Jeho formát vychádza
populárne hovori ujú dynamicky reagova
prehliada ných
XAML ako sprostredkovate tímového vývoja
ou
nú vývojári pracova na ami
prezenta
13Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
ami prezenta nej vrstvy a návrhového prostredia
Naproti tomu ak je dizajnérov návrh vytvorený v takom prostredí a formáte, ktorý je podporovaný aj vývojovými prostrediami, je zaru návrhu
a vývojársky tím do návrhu naprogramuje aplika nú logiku
nej vrstvy aplikácie
uje spoluprácu návrhových nástrojov a vývojových prostredí
14
<Canvas xmlns="http://schemas.microsoft.com/client/2007"> <TextBlock FontSize="32" Text="Hello world" /> </Canvas>
<TextBlock FontSize="32" Text="Hello world" />
TextBlock t = new TextBlock(); t.FontSize = 32; t.Text = "Hello world";
15Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
Zobrazenie XAML aplikácie
- panely
Objekt Canvas
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="640" Height="480" Background="White" x:Name="Page" > <Rectangle Canvas.Top="25" Canvas.Left="25" Width="200" Height="150" Fill="Red" />
</Canvas>
16
Relatívna poloha plochy geometrického obrazca vo i ploche Canvas
je vo vnútri hlavnej (bielej) plochy vnorená ervená vnorená plocha Canvas. Vo vnútri vnorenej i
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="640" Height="480" Background="White" x:Name="Page" > <Canvas Canvas.Top="25" Canvas.Left="25" Width="250" Height="100" Background="Red">
<Ellipse Canvas.Top="10" Canvas.Left="25" Width="150" Height="75" Fill="Yellow" />
</Canvas>
</Canvas>
17Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
Vnorenie plochy Canvas
Prvky vektorovej grafiky uje definova základné geometrické obrazce a tvary, pomocou ktorých vytvárame a
dotvárame dizajn prezenta zo základných obrazcov:
<Rectangle /> <Ellipse /> <Line /> <Polygon /> <PolyLine /> <Path />
<Canvas ... <Rectangle Width="248" Height="199" Stroke="#FF000000" Canvas.Left="62"
Canvas.Top="66" Fill="#FFD5E82B"/> <Ellipse Width="312" Height="145" Fill="#FFE8552B" Stroke="#FF000000"
Canvas.Left="169" Canvas.Top="152"/> <Path Width="105.455" Height="74.457" Fill="#FFE8552B" Stretch="Fill"
Stroke="#FF000000" Canvas.Left="82.5" Canvas.Top="303.043" Data="M108,304 C105.14454,311.44459 102.18639,317.69524 101,326 99.624327,335.62971 93.71711,338 114,338 118.92263,338 158.76402,335.76402 137,314 124.23846,301.23846 130.06165,297.21526 111,319 102.26477,328.98312 93.599741,332.87353 83,341"/>
</Canvas>
18
Príklad vykreslenia prvkov vektorovej grafiky
Objekt Brush
uje definova tri druhy objektov Brush hy jedným farebným odtieäom
<Canvas ... <Rectangle Width="240" Height="136" Stroke="#FF000000" Canvas.Left="55" Canvas.Top="65"> <Rectangle.Fill> <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5"> <GradientStop Color="#FF000000" Offset="0"/> <GradientStop Color="#FFFFFFFF" Offset="1"/> </LinearGradientBrush> </Rectangle.Fill> </Rectangle> </Canvas>
19Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
Prvok Brush
priebeh
<Canvas ... <Rectangle Width="200" Height="150" > <Rectangle.Fill> <RadialGradientBrush> <RadialGradientBrush.GradientStops> <GradientStop Color="Red" Offset="0" /> <GradientStop Color="Black" Offset="1" /> </RadialGradientBrush.GradientStops> </RadialGradientBrush> </Rectangle.Fill>
</Rectangle> </Canvas>
Transformácie . Prostredníctvom XAML
ov bude
20
<Canvas ... <TextBlock Text="Hello World"> <TextBlock.RenderTransform> <RotateTransform Angle="15" /> </TextBlock.RenderTransform>
</TextBlock> </Canvas>
Pooto nie <RotateTransform /> objektu
Silverlight 1.0 aplikácia v prostredí Microsoft Expression Blend 2
21Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
Ponukový dialóg, ktorý sa zobrazí po spustení aplikácie Microsoft Expression Blend
plánujeme vytvára projekty tohto typu.
Vytvorenie projektu v prostredí Microsoft Expression Blend
Súbory tvoriace projekt iato sa s akých súborov sa
projekt skladá.
Kreslenie.csprojprojekt pozostáva, prilinkovávaných objektoch a o nastavení niektorých parametrov.
22
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration Condition="'$(Configuration)'==''">Debug</Configuration> <DefaultClrNameSpace>Kreslenie</DefaultClrNameSpace> <AssemblyName>Kreslenie</AssemblyName> <OutputPath>bin\$(Configuration)\</OutputPath> <ApplicationVersion>1.0.0.*</ApplicationVersion> <ApplicationRevision>0</ApplicationRevision> <ExpressionBlendCreationVersion>2.0.1077.0</ExpressionBlendCreationVersion> <OutputType>Library</OutputType> <RootNamespace>Kreslenie</RootNamespace> <StartPageUrl>Default.html</StartPageUrl> ... </PropertyGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <ItemGroup> <Content Include="Default.html" /> <Content Include="Default_html.js"> <DependentUpon>Default.html</DependentUpon> </Content> <Content Include="Page.xaml.js"> <DependentUpon>Page.xaml</DependentUpon> </Content> <Content Include="Silverlight.js" /> <Page Include="Page.xaml" /> </ItemGroup> </Project>
Default.html
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Kreslenie</title>
<script type="text/javascript" src="Silverlight.js"></script> <script type="text/javascript" src="Default_html.js"></script> <script type="text/javascript" src="Page.xaml.js"></script> <style type="text/css"> .silverlightHost { height: 480px; width: 640px; } </style> </head>
<body> <div id="SilverlightControlHost" class="silverlightHost"> <script type="text/javascript"> createSilverlight(); </script> </div> </body> </html>
23Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
default_html.js - JavaScriptový kód na pozadí hlavnej stránky. Obsahuje kód funkcie
<div id="SilverlightControlHost" class="silverlightHost"> <script type="text/javascript"> createSilverlight(); </script> </div>
sa aktivuje pri zavádzaní stránky. .
function createSilverlight() { var scene = new Kreslenie.Page(); Silverlight.createObjectEx({ source: "Page.xaml", parentElement: document.getElementById("SilverlightControlHost"), id: "SilverlightControl", properties: { width: "100%", height: "100%", version: "1.0" }, events: { onLoad: Silverlight.createDelegate(scene, scene.handleLoad) } }); }
if (!window.Silverlight) window.Silverlight = {};
Silverlight.createDelegate = function(instance, method) { return function() { return method.apply(instance, arguments); } }
Page.xaml
a podobne.
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="640" Height="480"
24
Background="White" x:Name="Page" > </Canvas>
Page_xaml.js
if (!window.Projekt1) window.Projekt1 = {};
Projekt1.Page = function() {}
Projekt1.Page.prototype = { handleLoad: function(control, userContext, rootElement) { this.control = control; // Sample event hookup: rootElement.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handleMouseDown)); },
// Sample event handler handleMouseDown: function(sender, eventArgs) { // The following line of code shows how to find an element // by name and call a method on it. // this.control.content.findName("Timeline1").Begin(); } }
Silverlight.js
Grafický návrh jednoduchého objektu
25Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
Pracovná plocha nástroja Microsoft Expression Blend sa dá prepnú
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="640" Height="480" Background="LightBlue" x:Name="Page" > </Canvas>
a obd
<Canvas ... <Rectangle Width="156" Height="121" Fill="#FFFFFFFF" Stroke="#FF000000" Canvas.Left="161" Canvas.Top="80"/> > </Canvas>
- Project - Properties
-
26
Zmena farby obd
<Canvas ... <Rectangle Width="156" Height="121" Fill="#FFAC5050" Stroke="#FF000000" Canvas.Left="161" Canvas.Top="80"/> > </Canvas>
<Canvas ... <Rectangle Width="156" Height="121" Stroke="#FF000000" Canvas.Left="161" Canvas.Top="80"> <Rectangle.Fill> <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5"> <GradientStop Color="#FF000000" Offset="0"/> <GradientStop Color="#FFEEA3A3" Offset="1"/> </LinearGradientBrush> </Rectangle.Fill> </Rectangle> </Canvas>
Otestovanie aplikácie
27Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
Otestovanie aplikácie
Spracovanie udalostí
avého tla vek na ploche ahko identifikova
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="640" Height="480" Background="Yellow" x:Name="Page" MouseLeftButtonDown="KlikNaCanvas" > </Canvas>
if (!window.VideoPlay) window.VideoPlay = {};
VideoPlay.Page = function() {
28
}
VideoPlay.Page.prototype = { handleLoad: function(control, userContext, rootElement) { this.control = control; // Sample event hookup: rootElement.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handleMouseDown)); }, // Sample event handler handleMouseDown: function(sender, eventArgs) { // The following line of code shows how to find an element by name and call a method on it. // this.control.content.findName("Timeline1").Begin(); } }
function KlikNaCanvas() { alert("Bolo kliknuté na plochu Canvas"); }
29Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
function KlikNaCanvas(sender, args) { sender.background = "blue"; }
Obsluha udalostí pri nahrávaní stránky
<Canvas ... <Rectangle Width="313" Height="222" Fill="White" Stroke="Black" Canvas.Left="76" Canvas.Top="118" Loaded="rct_load"/> </Canvas>
function rct_load(sender, args) { sender.Fill = "Yellow"; }
Práca s objektami v JavaScripte
function rct_load(sender, args) { sender.Fill = "Yellow"; }
<Rectangle x:Name="obdlznik1" Width="313" Height="222" Fill="White" Stroke="Black" Canvas.Left="76" Canvas.Top="118" />
30
Aby sme mohli inicializova nejakú akciu explicitne, potrebujeme nejaký ovládací prvok. Nako ko
ich definova napríklad pomocou bloku textu.
<TextBlock Width="102" Height="23" Canvas.Left="76" Canvas.Top="375" TextWrapping="Wrap" MouseLeftButtonDown="akcia"> <Run Text="Akcia"/> </TextBlock>
V metóde, ktorú aktivujeme zatla ením tla idla nebudeme pracova s tla idlom, ale s obd
function akcia(sender, args) { sender.findName("obdlznik1").Fill = "Yellow"; }
Animáciaova , preco animácia
Rozpohybované veci na seba upriamujú pozornos a mnohé postupy, princípy a podobne sa dajú nejaký objekt,
,
<Rectangle x:Name="obdlznik" Width="200" Height="100" Fill="Yellow" Stroke="Black" StrokeThickness="5" Canvas.Left="50" Canvas.Top="50"/>
vodorovný pohyb objektu. Technicky povedané, potrebujeme meni hodnotu
táto zmena prejavila ako animácia, musí by napríklad na za
<Canvas.Resources> <Storyboard x:Name="animacia" Storyboard.TargetName="obdlznik" Storyboard.TargetProperty="(Canvas.Left)"> <DoubleAnimation RepeatBehavior="Forever" To="300"/> </Storyboard> </Canvas.Resources>
Ak by sme spustili aplikáciu v tomto okamihu, obd ,nako ko sme animáciu zatia e neriadime. Aby sme mohli animáciu objektu riadi na objekt referenciu. Následne vytvoríme metódy pre inicializovanie základných riadiacich
31Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
<TextBlock x:Name="tbStart" Width="72" Height="24" Canvas.Left="20" Canvas.Top="448" Text="START" TextWrapping="Wrap" Foreground="Green" MouseLeftButtonDown="start"/>
<TextBlock x:Name="tbStop" Width="72" Height="24" Canvas.Left="80" Canvas.Top="448" Text="STOP" TextWrapping="Wrap" Foreground="Red" MouseLeftButtonDown="stop"/>
<TextBlock x:Name="tbPause" Width="72" Height="24" Canvas.Left="140" Canvas.Top="448" Text="PAUZA" TextWrapping="Wrap" Foreground="Black" MouseLeftButtonDown="pauza"/>
function start(sender, args) { sender.findName("animacia").begin(); }
32
function stop(sender, args) { sender.findName("animacia").stop(); }
function pauza(sender, args) { sender.findName("animacia").pause(); }
.
Vytvorenie animácie v grafickom návrhovom prostredí
Pomocou tla
<Path Width="428.105" Height="107.187" Fill="#FF50B137" Stretch="Fill" Canvas.Left="21.5" Canvas.Top="90.341" Data="M27,392 C388,155 802,397 414,394 26,391 27,392 27,392 z"/>
33Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
a v
a
<Canvas.Resources> <Storyboard x:Name="Timeline1">
<PointAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="path" Storyboard.TargetProperty="(Path.Data).(PathGeometry.Figures)[0]. (PathFigure.StartPoint)"> <SplinePointKeyFrame KeyTime="00:00:01" Value="129.238,88.7829247322082"/> <SplinePointKeyFrame KeyTime="00:00:02" Value="102.238,209.782"/> </PointAnimationUsingKeyFrames> ...
</Storyboard> </Canvas.Resources> <Path Width="460.907" Height="209.782" Fill="#FF50B137"
34
Stretch="None" Canvas.Left="-9.238" Canvas.Top="23.218" x:Name="path"> <Path.Data> <PathGeometry> <PathFigure IsClosed="True" StartPoint="30.7383561812547,172.264120521994"> <BezierSegment Point1="315.298093466867,-66.9676271962378" Point2="641.635299107431,177.311203807189" Point3="335.792700584391,174.282953836072"/> BezierSegment Point1="29.95010206135,171.254703864955" Point2="30.7383561812547,172.264120521994" Point3="30.7383561812547,172.264120521994"/> </PathFigure> </PathGeometry> </Path.Data> </Path>
vlastnos
Pod
tla idlá, tla
<Canvas MouseLeftButtonDown="start" Canvas.Left="20" Canvas.Top="20"> <Rectangle Stroke="Black" Height="40" Width="60" RadiusX="5" RadiusY="5"> <Rectangle.Fill> <RadialGradientBrush GradientOrigin="0.75,0.25"> <GradientStop Color="White" Offset="0.0" /> <GradientStop Color="Green" Offset="1.0" /> </RadialGradientBrush> </Rectangle.Fill> </Rectangle> <TextBlock Canvas.Left="5" Canvas.Top="5">START</TextBlock> </Canvas>
35Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
Silverlight .NET aplikácia v prostredí Microsoft Expression Blend 2
Default.html
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title>DotNet1</title> <script type="text/javascript" src="Default_html.js"></script> <script type="text/javascript" src="Silverlight.js"></script> <style type="text/css"> .silverlightHost { height: 480px; width: 640px; } </style> </head>
<body> <div id="SilverlightControlHost" class="silverlightHost"> <script type="text/javascript"> createSilverlight(); </script> </div> </body> </html>
Page.xaml
<Canvas xmlns="http://schemas.microsoft.com/client/2007"
37Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="640" Height="480" Background="White" xmlns:DotNet1="clr-namespace:DotNet1;assembly=ClientBin/DotNet1.dll" x:Class="DotNet1.Page;assembly=ClientBin/DotNet1.dll" x:Name="Page" > </Canvas>
Page.xaml.cs
using System; using System.IO; using System.Windows; using System.Windows.Controls; using System.Windows.Media;
namespace DotNet1 { public partial class Page : Canvas { public Page() { this.Loaded += this.Page_Loaded; }
private void Page_Loaded(object sender, EventArgs args) { // Required to initialize variables. Needs to be done from loaded event so FindName works properly. InitializeComponent();
// Insert code required on object creation below this point. } } }
Kód na pozadí XAML stránky, alebo
<Canvas ... > <TextBlock Width="270" Height="57" Canvas.Left="99" Canvas.Top="118" Text="TextBlock" TextWrapping="Wrap" x:Name="Sprava"/> </Canvas>
38
Návrh prezenta
private void Page_Loaded(object sender, EventArgs args) { InitializeComponent(); // Insert code required on object creation below this point. Sprava.Text = "Hello World!"; }
Build project: DotNet1.sln, Targets: Build __________________________________________________ Project "C:\!@-Knihy 2007\Zborník Silverlight\Priklady\DotNet1\DotNet1.sln" (Build target(s)):
__________________________________________________ Project "C:\!@-Knihy 2007\Zborník Silverlight\Priklady\DotNet1\DotNet1.sln" is building "C:\!@-Knihy 2007\Zborník Silverlight\Priklady\DotNet1\DotNet1.csproj" (default targets):
DotNet1 -> C:\!@-Knihy 2007\Zborník Silverlight\Priklady\DotNet1\ClientBin\DotNet1.dll The build has successfully completed.
39Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
Zobrazenie aplikácie v okne webového prehliada a
Silverlight aplikácia pre prehrávanie videa
videa
<Canvas ... <MediaElement x:Name="Keyboard_wmv" Width="1024" Height="768" Source="Keyboard.wmv" Stretch="Fill"/> </Canvas>
doplni
40
Aplikácia pre prehrávanie videa
ne prehráva
Ur
41Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
dolného rohu plochy, pod prvok pre prehrávanie videa. Do XAML kódu, ktorý vznikol vizuálnym návrhom enia avého tla
a
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="640" Height="480" Background="White" x:Name="Page" > <MediaElement AutoPlay="False" x:Name="Keyboard_wmv" Width="611" Height="436" Canvas.Top="8" Source="Keyboard.wmv" Stretch="Fill" Canvas.Left="8" /> <TextBlock x:Name="tbPlay" Width="72" Height="24" Canvas.Left="22" Canvas.Top="448" Text="Play" TextWrapping="Wrap" Foreground="#FF29F22E" MouseLeftButtonDown="play"/> <TextBlock x:Name="tbStop" Width="80" Height="24" Canvas.Left="128" Canvas.Top="448" Text="Stop" TextWrapping="Wrap" MouseLeftButtonDown="stop" Foreground="#FFF82820" /> </Canvas>
42
Aby aplikácia fungova , musíme kód deklarovaných procedúr doplni
function play(sender, eventArgs) { var slc = document.getElementById("SilverlightControl"); var me = slc.content.findName("Keyboard_wmv"); me.Play(); }
function stop(sender, eventArgs) { var slc = document.getElementById("SilverlightControl"); var me = slc.content.findName("Keyboard_wmv"); me.Stop(); }
,
a prehrávanie videa
43Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
Aby sme ukázali výhody technológie Silverlight, budeme vytvárachceli prezentova ilo by nám vytvoriklasickú ASP.NET stránku a nepotrebovali by sme k tomu technológiu Silverlight.
aautomaticky po na
<Canvas.Triggers> <EventTrigger RoutedEvent ="Canvas.Loaded"> <BeginStoryboard> <Storyboard x:Name="Timeline1"> <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="animacia" Storyboard.TargetProperty="(UIElement.Opacity)"> <SplineDoubleKeyFrame KeyTime="00:00:01" Value="0"/> <SplineDoubleKeyFrame KeyTime="00:00:05" Value="1"/> </DoubleAnimationUsingKeyFrames> </Storyboard> </BeginStoryboard> </EventTrigger> </Canvas.Triggers>
Pomocou animácie budeme meni v adnos plochy.
as.
<TextBlock x:Name="lbKurz" Canvas.Left="10" Canvas.Top="10" FontSize="24" FontWeight="Bold" Foreground="Gray" Text="Kurz:" TextWrapping="Wrap"/> <TextBlock x:Name="lbMena" Canvas.Left="100" Canvas.Top="8" FontSize="24" FontWeight="Bold" Foreground="Blue" Text="GBP Ve ká Británia" TextWrapping="Wrap"/>
V adne
ktoré obsahuje sú nevidite né V etape návrhu odporú ame nastavimáme preh ad o tok kde budú jednotlivé údaje
<Canvas Opacity="1" x:Name="canvas1" Width="600" Height="150" Canvas.Left="10" Canvas.Top="50"> <TextBlock x:Name="lbNakup" Width="205" Height="59" FontFamily="Tahoma" FontSize="48" FontWeight="Bold" Foreground="Orange" Text="Nakup" TextWrapping="Wrap" Canvas.Left="100" Canvas.Top="10"/> <TextBlock x:Name="lbPredaj" Width="205" Height="59" FontFamily="Tahoma" FontSize="48" FontWeight="Bold" Foreground="Blue" Text="Predaj" TextWrapping="Wrap" Canvas.Left="100" Canvas.Top="80"/> </Canvas>
45Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
Vo vývojovom prostredí Visual Studio 2005 alebo v novej verzii 2008, prípadne vo Visual Web Developeri
using System; using System.Linq; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; using System.Xml.Linq;
[WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. // [System.Web.Script.Services.ScriptService] public class Service : System.Web.Services.WebService { public Service () {
//Uncomment the following line if using designed components //InitializeComponent(); }
[WebMethod] public string HelloWorld() { return "Hello World"; } }
public string HelloWorld() { return "Hello World "+ DateTime.Now.ToString(); }
trojpísmenový
[WebMethod] public double DajKurzNakup(string sMena) { switch (sMena) { case "EUR": return 32.8; break; case "USD": return 23.1; break; case "GBP": return 52.2; break; default: return 1.0; break;
47Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
} }
<?xml version="1.0" encoding="utf-8" ?> <double xmlns="http://tempuri.org/">23.1</double>
Vytvorenie ASP.NET stránky generujúcej XAML dokument
48
Pridanie ASP.NET stránky do projektu
ko sa jedná as
49Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
asti (súbor
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UpravyXAML.aspx.cs" Inherits="UpravyXAML" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> </div> </form> </body> </html>
a súbor s oddeleným kódom
using System; using System.Data; using System.Configuration; using System.Collections; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Xml.Linq;
50
public partial class UpravyXAML : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) {
} }
Do sekcie deklarácie menných priestorov pridáme referencie na menné priestory prepojenia pracujúce s elementmi XML dokumentu.
using System.Xml; using System.Xml.XPath;
XAML stránku budeme upravovaV tejto metóde na
protected void Page_Load(object sender, EventArgs e) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(Server.MapPath("Page.xaml")); }
jednoduchos
//string sMena = Request.Params["MENA"]; string sMena = "GBP"; localhost.Service kurz = new localhost.Service(); string sKurzNakup = kurz.DajKurzNakup(sMena); string sKurzPredaj = kurz.DajKurzPredaj(sMena);
Aby sme mohli otestova
<form id="form1" runat="server"> <div> <asp:Label ID="lbNakup" runat="server" Text="Label"></asp:Label> <br /> <asp:Label ID="lbPredaj" runat="server" Text="Label"></asp:Label> </div> </form>
bude
protected void Page_Load(object sender, EventArgs e) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(Server.MapPath("Page.xaml")); //string sMena = Request.Params["MENA"]; string sMena = "GBP"; localhost.Service kurz = new localhost.Service(); double dKurzNakup = kurz.DajKurzNakup(sMena); double dKurzPredaj = kurz.DajKurzPredaj(sMena);
lbNakup.Text = dKurzNakup.ToString();
51Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
lbPredaj.Text = dKurzPredaj.ToString(); }
protected void Page_Load(object sender, EventArgs e) { string sMena = "GBP"; localhost.Service kurz = new localhost.Service(); double dKurzNakup = kurz.DajKurzNakup(sMena); double dKurzPredaj = kurz.DajKurzPredaj(sMena);
XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(Server.MapPath("Page.xaml")); string strXPath = "";
XmlNamespaceManager mng = new XmlNamespaceManager(new NameTable()); mng.AddNamespace("d", "http://schemas.microsoft.com/client/2007"); mng.AddNamespace("x", "http://schemas.microsoft.com/winfx/2006/xaml");
strXPath = "//d:TextBlock[@x:Name='lbNakup']"; XmlNode xNodeN = xmlDoc.SelectSingleNode(strXPath, mng); xNodeN.Attributes["Text"].Value = dKurzNakup.ToString();
strXPath = "//d:TextBlock[@x:Name='lbPredaj']"; XmlNode xNodeP = xmlDoc.SelectSingleNode(strXPath, mng); xNodeP.Attributes["Text"].Value = dKurzPredaj.ToString();
Response.ContentType = "text/xml"; Response.Write(xmlDoc.InnerXml); }
52
Chybové hlásenie pri spustení aplikácie
Preto musíme zo stránky UpravyXAML.aspx odstráni
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UpravyXAML.aspx.cs" Inherits="UpravyXAML" %>
ik od cie a. Zobrazí sa nám obsah XAML , i boli placeholdery správne nahradené
53Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="640" Height="480" Background="White" x:Name="Page"> <Canvas.Triggers> <EventTrigger RoutedEvent="Canvas.Loaded"> <BeginStoryboard> <Storyboard x:Name="Timeline1"> <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="canvas1" Storyboard.TargetProperty="(UIElement.Opacity)"> <SplineDoubleKeyFrame KeyTime="00:00:01" Value="0" /> <SplineDoubleKeyFrame KeyTime="00:00:05" Value="1" /> </DoubleAnimationUsingKeyFrames> </Storyboard> </BeginStoryboard> </EventTrigger> </Canvas.Triggers> <TextBlock x:Name="lbKurz" Canvas.Left="10" Canvas.Top="10" FontSize="24" FontWeight="Bold" Foreground="Gray" Text="Kurz:" TextWrapping="Wrap" /> <TextBlock x:Name="lbMena" Canvas.Left="100" Canvas.Top="8" FontSize="24" FontWeight="Bold" Foreground="Blue" Text="GBP Ve ká Británia" TextWrapping="Wrap" /> <Canvas Opacity="0" x:Name="canvas1" Width="470" Height="150" Canvas.Left="10" Canvas.Top="50"> <TextBlock x:Name="lbNakup" Width="205" Height="59" FontFamily="Tahoma" FontSize="48" FontWeight="Bold" Foreground="Orange" Text="52,2" TextWrapping="Wrap" Canvas.Left="100" Canvas.Top="10" /> <TextBlock x:Name="lbPredaj" Width="205" Height="59" FontFamily="Tahoma" FontSize="48" FontWeight="Bold" Foreground="Blue" Text="53,2" TextWrapping="Wrap" Canvas.Left="100" Canvas.Top="80" /> </Canvas> </Canvas>
<script type="text/javascript" src="Silverlight.js"></script>
<script type="text/javascript"> Sys.Silverlight.createObjectEx({ source: "http://localhost:49267/KurzWS/UpravyXAML.aspx" parentElement: document.getElementById("SilverlightControlHost"), id: "SilverlightControl", properties: {width: "100%", height: "100%", version: "1.0"}, events: {onLoad: null} }); </script>
54
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script>
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Aktualny kurz</title> <script type="text/javascript" src="Silverlight.js"></script> </head> <body> <div id='SilverlightControlHost'> <script type="text/javascript"> Sys.Silverlight.createObjectEx({ source: "http://localhost:49267/KurzWS/UpravyXAML.aspx" , parentElement: document.getElementById("SilverlightControlHost"), id: "SilverlightControl", properties: {width: "100%", height: "100%", version: "1.0"}, events: {onLoad: null} }); </script> </div>
</body> </html>
Expression Encoder
55Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
Pracovná plocha nástroja Expression Encoder po naimportovaní videosúboru
Proces kódovania spustíme bu pomocou tlapomocou skrátenej vo na
konto na Live ID (vi ).
obsahova tieto riadky:
<SilverlightApp> <version>1.0</version> <loadFunction>StartWithParent</loadFunction> <jsOrder> <js>MicrosoftAjax.js</js> <js>BasePlayer.js</js> <js>PlayerStrings.js</js> <js>player.js</js> <js>StartPlayer.js</js> </jsOrder> </SilverlightApp>
http://silverlight.live.com súbory
a
57Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression
Po zatvorení projektu sa informácie o
<?xml version="1.0" encoding="utf-16"?> <!--Created with Expression Encoder version 1.0.2905.0--> <JobFile Version="1.0"> <Job OutputDirectory="C:\Users\Luboslav Lacko\Documents\Expression\Expression Encoder\Output"> <MediaFiles> <MediaFile Source="C:\b\Keyboard.wmv" VideoProfile="Streaming420" AudioProfile="AudioMediumQuality" /> </MediaFiles> </Job> </JobFile>
Silverlight Streaming by Windows Live
ovakos
Silverlight versus Flash
a
písa
vek
58
Záverom inov na ceste k dizajnovo bohatým a interaktívnym
oraz viac smerova k 3D
59Microsoft® Silverlight™
Úvod do technológie a tvorby aplikácií pomocou nástrojov Microsoft Expression