<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://gozoomin.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Tiago Barbosa</title><subtitle type="html">Gadgets, Silverlight, WPF, Surface, XNA, Azure...</subtitle><id>http://gozoomin.com/blogs/tbarbosa/atom.aspx</id><link rel="alternate" type="text/html" href="http://gozoomin.com/blogs/tbarbosa/default.aspx" /><link rel="self" type="application/atom+xml" href="http://gozoomin.com/blogs/tbarbosa/atom.aspx" /><generator uri="http://communityserver.org" version="4.1.40407.4157">Community Server</generator><updated>2009-09-27T10:27:00Z</updated><entry><title>Meet the Geeks @ Covilhã</title><link rel="alternate" type="text/html" href="/blogs/tbarbosa/archive/2010/03/09/meet-the-geeks-covilh-227.aspx" /><id>/blogs/tbarbosa/archive/2010/03/09/meet-the-geeks-covilh-227.aspx</id><published>2010-03-09T21:16:00Z</published><updated>2010-03-09T21:16:00Z</updated><content type="html">&lt;p&gt;&lt;a title="meet the geeks" href="http://meetthegeeks.wordpress.com/"&gt;Meet the Geeks&lt;/a&gt; hoje na Covilh&amp;atilde;. &amp;Aacute;s 22h no Soda.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;V&amp;atilde;o discutir-se todo o tipo de assuntos. Apare&amp;ccedil;am que vai valer a pena. ;)&lt;/p&gt;
&lt;p&gt;At&amp;eacute; j&amp;aacute;...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gozoomin.com/aggbug.aspx?PostID=70122" width="1" height="1"&gt;</content><author><name>Tiago Barbosa</name><uri>http://gozoomin.com/members/Tiago-Barbosa/default.aspx</uri></author><category term="Eventos" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/Eventos/default.aspx" /><category term="geeks" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/geeks/default.aspx" /><category term="divers&amp;#227;o" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/divers_26002300_227_3B00_o/default.aspx" /><category term="tecnologia" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/tecnologia/default.aspx" /></entry><entry><title>Tutorial 4: Capturar movimentos do rato em Silverlight</title><link rel="alternate" type="text/html" href="/blogs/tbarbosa/archive/2010/03/07/tutorial-4-capturar-movimentos-do-rato-em-silverlight.aspx" /><id>/blogs/tbarbosa/archive/2010/03/07/tutorial-4-capturar-movimentos-do-rato-em-silverlight.aspx</id><published>2010-03-07T01:14:00Z</published><updated>2010-03-07T01:14:00Z</updated><content type="html">&lt;p&gt;Neste tutorial vou mostrar-vos como se podem capturar as ac&amp;ccedil;&amp;otilde;es e movimentos do rato para criar aplica&amp;ccedil;&amp;otilde;es bastante interactivas. Como exemplo vamos criar uma aplica&amp;ccedil;&amp;atilde;o que permite alterar o tamanho de uma imagem e mov&amp;ecirc;-la pelo ecr&amp;atilde;. &lt;/p&gt;
&lt;p&gt;O esquema do projecto &amp;eacute; o seguinte:&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/8816.DraggingCanvas.png"&gt;&lt;img src="http://gozoomin.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/8816.DraggingCanvas.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ao pressionar e arrastar os cantos da imagem vamos proceder ao redimensionamento. Ao seleccionar e arrastar os lados movemos a imagem de sitio. &lt;/p&gt;
&lt;p&gt;Antes demais existem algumas no&amp;ccedil;&amp;otilde;es que t&amp;ecirc;m que ser introduzidas de modo a conseguirmos actuar correctamente sobre os movimentos do rato. Para o movimento de &amp;quot;drag&amp;quot; n&amp;atilde;o &amp;eacute; necess&amp;aacute;rio saber onde estamos a carregar mas para o movimento de &amp;quot;resize&amp;quot; temos que saber qual o canto que temos seleccionado para calcularmos as altera&amp;ccedil;&amp;otilde;es de tamanho e posi&amp;ccedil;&amp;atilde;o da imagem. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;Basicamente o que utilizamos para calcular a nova posi&amp;ccedil;&amp;atilde;o &amp;eacute; a f&amp;oacute;rmula utilizada para calcular uma dist&amp;acirc;ncia entre dois pontos.&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/0820.distanceForm.png"&gt;&lt;img height="42" width="258" src="http://gozoomin.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/0820.distanceForm.png" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Outra coisa que precisamos de saber &amp;eacute; que existem pontos para os quais &amp;eacute; mais f&amp;aacute;cil calcular o redimensionamento. O mais f&amp;aacute;cil de todos &amp;eacute; o canto inferior direito e &amp;eacute; bastante f&amp;aacute;cil perceber porqu&amp;ecirc;. Para o ponto inferior direito basta-nos calcular o novo comprimento e altura. N&amp;atilde;o necessitamos de movimentar a imagem. Para os outros pontos j&amp;aacute; n&amp;atilde;o &amp;eacute; assim. &lt;/p&gt;
&lt;p&gt;Agora que j&amp;aacute; temos todas as no&amp;ccedil;&amp;otilde;es necess&amp;aacute;rias para a cria&amp;ccedil;&amp;atilde;o deste projecto vamos passar &amp;agrave; ac&amp;ccedil;&amp;atilde;o. &lt;/p&gt;
&lt;p&gt;Em primeiro lugar vamos criar um novo projecto Silverlight no Expression Blend. (O projecto tamb&amp;eacute;m poderia ser criado no Visual Studio mas como n&amp;oacute;s pretendemos em primeiro lugar a componente visual da aplica&amp;ccedil;&amp;atilde;o criamos a aplica&amp;ccedil;&amp;atilde;o no Blend)&lt;/p&gt;
&lt;p align="center"&gt;&amp;nbsp;&lt;a href="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/8231.newBlendProject.png"&gt;&lt;img src="http://gozoomin.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/8231.newBlendProject.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ao meu novo projecto eu chamei DragImageTutorial. Agora que o nosso projecto Silverlight est&amp;aacute; criado a primeira coisa a fazer &amp;eacute; alterar o tipo do nosso Layout Root de Grid para Canvas como &amp;eacute; mostrado em baixo. Este passo &amp;eacute; muito importante pois facilita bastante as ac&amp;ccedil;&amp;otilde;es sobre as imagens pois se quisermos alterar a posi&amp;ccedil;&amp;atilde;o destas s&amp;oacute; temos que dar novos valores a Canvas.Top e Canvas.Left que definem as dist&amp;acirc;ncias do nosso objecto ao topo e &amp;agrave; esquerda respectivamente. &lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/1220.gridToCanvas.png"&gt;&lt;img src="http://gozoomin.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/1220.gridToCanvas.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Agora vamos criar o nosso objecto que ir&amp;aacute; conter a imagem. Este objecto vai ter o seguinte layout:&lt;/p&gt;
&lt;p&gt;Grid:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rectangle (Rectangulo que vai permitir mover&amp;nbsp; a imagem pelo canvas)&lt;/li&gt;
&lt;li&gt;4 Rectangles (Rectangulos que est&amp;atilde;o nos quatro cantos da imagem e que v&amp;atilde;o permitir fazer o redimensionamento da mesma)&lt;/li&gt;
&lt;li&gt;Image (Imagem que vai ser redimensionada)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;A estrutura &amp;eacute; esta. O design agora fica ao cargo de cada um. ;) &lt;/p&gt;
&lt;p&gt;O pr&amp;oacute;ximo passo &amp;eacute; adicionar os seguintes eventos a todos os rectangulos de modo a conseguirmos tratar os movimentos e redimensionamento da imagem:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MouseLeftButtonDown ( Evento lan&amp;ccedil;ado quando o bot&amp;atilde;o esquerdo do rato &amp;eacute; pressionado sobre o objecto em quest&amp;atilde;o)&lt;/li&gt;
&lt;li&gt;MouseLeftButtonUp ( Evento lan&amp;ccedil;ado quando o bot&amp;atilde;o esquerdo do rato &amp;eacute; largado)&lt;/li&gt;
&lt;li&gt;MouseMove ( Evento lan&amp;ccedil;ado quando o rato &amp;eacute; movido)&lt;/li&gt;
&lt;/ul&gt;
&lt;p align="center"&gt;&amp;nbsp;&lt;a href="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/6523.xamlWithEvents.png"&gt;&lt;img src="http://gozoomin.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/6523.xamlWithEvents.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Vamos come&amp;ccedil;ar por tratar apenas o deslocamento da imagem pois &amp;eacute; a parte mais f&amp;aacute;cil e vai servir para perceber a nossa maneira de pensar. Antes de mais temos que criar uma vari&amp;aacute;vel global do tipo booleano que nos vai dizer se a imagem est&amp;aacute; a ser arrastada ou n&amp;atilde;o. &lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/1638._5F00_isDraggingDeclaration.png"&gt;&lt;img src="http://gozoomin.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/1638._5F00_isDraggingDeclaration.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Os eventos para o rectangulo que move a imagem&amp;nbsp;funcionam da seguinte forma:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quando o bot&amp;atilde;o &amp;eacute; pressionado, caso o objecto n&amp;atilde;o esteja j&amp;aacute; a ser movido, iniciamos a captura do rato para este objecto. Em seguida guardamos a distancia do ponto (X,Y) que est&amp;aacute; a ser pressionado em rela&amp;ccedil;&amp;atilde;o ao ponto de origem deste rectangulo e depois dizemos que o objecto est&amp;aacute; a ser movido.&lt;/li&gt;
&lt;li&gt;Quando o bot&amp;atilde;o &amp;eacute; largado o que fazemos &amp;eacute; dizer que o objecto n&amp;atilde;o est&amp;aacute; a ser movido e largamos a captura do rato para este objecto, caso este objecto esteja a ser movido, ou seja, isDragging = true.&lt;/li&gt;
&lt;li&gt;No evento de MouseMove o que fazemos &amp;eacute; calcular o novo ponto de origem do objecto que tal como podemos ver em baixo &amp;eacute; apenas uma diferen&amp;ccedil;a entre o ponto actual, tendo como base a&amp;nbsp;origem da nossa janela,&amp;nbsp;e o ponto onde o captura do rato foi iniciada. Estes c&amp;aacute;lculos s&amp;oacute; ser&amp;atilde;o realizados caso o nosso objecto esteja a ser deslocado.&lt;/li&gt;
&lt;/ul&gt;
&lt;p align="center"&gt;&lt;a href="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/1018.moveCode.png"&gt;&lt;img src="http://gozoomin.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/1018.moveCode.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Esta parte foi a mais simples mas serviu como exemplo para os outros objectos que faltam. A l&amp;oacute;gica &amp;eacute; a mesma (Activar -&amp;gt; Mover -&amp;gt; Desactivar), os c&amp;aacute;lculos que fazemos &amp;eacute; que s&amp;atilde;o diferentes. Para explicar mais em detalhe cada um dos rectangulos que est&amp;atilde;o nos cantos da imagem e que v&amp;atilde;o servir para fazer o redimensionamento da mesma vamos separar a explica&amp;ccedil;&amp;atilde;o em 4 partes diferentes. Uma para cada rectangulo.&lt;/p&gt;
&lt;p&gt;Antes de mais precisamos de adicionar 4 vari&amp;aacute;veis booleanas para nos devolver o estado de cada um dos quatro objectos tal como fizemos para o rectangulo anterior.&lt;/p&gt;
&lt;h3&gt;Parte 1 (canto inferior direito)&lt;/h3&gt;
&lt;p&gt;Para este canto n&amp;atilde;o necessitamos de alterar a localiza&amp;ccedil;&amp;atilde;o do objecto basta-nos alterar a largura e altura do mesmo conforme a distancia percorrida pelo rato.&lt;/p&gt;
&lt;p align="center"&gt;&amp;nbsp;&lt;a href="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/1781.rect1.png"&gt;&lt;img src="http://gozoomin.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/1781.rect1.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&amp;nbsp;Parte&amp;nbsp;2 (canto&amp;nbsp;superior direito)&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;Neste canto temos que alterar a largura, a altura mas tamb&amp;eacute;m temos que alterar a posi&amp;ccedil;&amp;atilde;o em rela&amp;ccedil;&amp;atilde;o ao topo do ecr&amp;atilde; pois podemos redimensionar para cima.&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/5282.rect2.png"&gt;&lt;img src="http://gozoomin.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/5282.rect2.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&amp;nbsp;Parte&amp;nbsp;3 (canto superior esquerdo)&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;No canto superior esquerdo temos que alterar todas as propriedades do objecto (tamanho, largura,&amp;nbsp;posicionamento em rela&amp;ccedil;&amp;atilde;o ao topo e posicionamento em rela&amp;ccedil;&amp;atilde;o &amp;agrave; esquerda).&amp;nbsp;&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/4848.rect3.png"&gt;&lt;img src="http://gozoomin.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/4848.rect3.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&amp;nbsp;Parte&amp;nbsp;4 (canto inferior esquerdo)&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;Para o &amp;uacute;ltimo canto temos que alterar a posi&amp;ccedil;&amp;atilde;o em rela&amp;ccedil;&amp;atilde;o &amp;agrave; esquerda, a altura e a largura do objecto. &lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/6283.rect4.png"&gt;&lt;img src="http://gozoomin.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/6283.rect4.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A partir deste momento temos um objecto que podemos movimentar no ecr&amp;atilde; e redimensionar. Obviamente existem outras formas para fazer este tipo de interac&amp;ccedil;&amp;atilde;o com os objectos mas acho que esta forma &amp;eacute; muito boa para uma pessoa que est&amp;aacute; a dar os primeiros passos no Silverlight. &lt;/p&gt;
&lt;p&gt;O pr&amp;oacute;ximo tutorial ter&amp;aacute; um toque das redes sociais. Facebook?? Twitter? Quem sabe...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gozoomin.com/aggbug.aspx?PostID=69930" width="1" height="1"&gt;</content><author><name>Tiago Barbosa</name><uri>http://gozoomin.com/members/Tiago-Barbosa/default.aspx</uri></author><category term="silverlight" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/silverlight/default.aspx" /></entry><entry><title>Techdays 2010</title><link rel="alternate" type="text/html" href="/blogs/tbarbosa/archive/2010/02/21/techdays-2010.aspx" /><id>/blogs/tbarbosa/archive/2010/02/21/techdays-2010.aspx</id><published>2010-02-21T02:10:00Z</published><updated>2010-02-21T02:10:00Z</updated><content type="html">&lt;p align="center"&gt;&lt;a href="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/1362.techdays_2D00_2010.png"&gt;&lt;img src="http://gozoomin.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/1362.techdays_2D00_2010.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;O maior evento de tecnologia da Microsoft j&amp;aacute; est&amp;aacute; em andamento. Este ano ter&amp;aacute; 3 dias!!! 20, 21 e 22 de Abril.&lt;/p&gt;
&lt;p&gt;Mais de 40 oradores especialistas em todas as &amp;aacute;reas de tecnologia. Aproveita e conhece as tecnologias do momento apresentadas pelos melhores.&lt;/p&gt;
&lt;p&gt;Inscreve-te antes de 5 de Mar&amp;ccedil;o e aproveita o desconto!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gozoomin.com/aggbug.aspx?PostID=69931" width="1" height="1"&gt;</content><author><name>Tiago Barbosa</name><uri>http://gozoomin.com/members/Tiago-Barbosa/default.aspx</uri></author><category term="Microsoft" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/Microsoft/default.aspx" /><category term="Eventos" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/Eventos/default.aspx" /></entry><entry><title>XNA Pizza Night</title><link rel="alternate" type="text/html" href="/blogs/tbarbosa/archive/2010/02/03/xna-pizza-night.aspx" /><id>/blogs/tbarbosa/archive/2010/02/03/xna-pizza-night.aspx</id><published>2010-02-03T14:45:00Z</published><updated>2010-02-03T14:45:00Z</updated><content type="html">&lt;p align="center"&gt;&lt;img src="http://gozoomin.com/resized-image.ashx/__size/506x273/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/6747.pizza2.png" border="0" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Gostas de pizza , jogos e de par&amp;oacute;dia?? Ent&amp;atilde;o o XNA Pizza Night &amp;eacute; o evento certo para ti!&lt;/p&gt;
&lt;p&gt;O XNA Pizza Night &amp;eacute; um evento aberto a todos os estudantes, game developers, game designers, entusiastas ou amantes de videojogos. Consiste em criar um pequeno jogo ou demo com a tecnologia XNA e virem ao &lt;a href="http://www.microsoft.com/portugal/mscorp/chegar.mspx"&gt;audit&amp;oacute;rio do edif&amp;iacute;cio da Microsoft em Lisboa&lt;/a&gt; dia &lt;b&gt;5 de Mar&amp;ccedil;o de 2010&lt;/b&gt; para jogarmos o vosso jogo. Os jogos mais votados pelos participantes v&amp;atilde;o receber in&amp;uacute;meros pr&amp;eacute;mios.&lt;/p&gt;
&lt;p&gt;PS:&amp;nbsp;As pizzas e as bebidas ficam &amp;agrave; conta da Microsoft.&amp;nbsp; ;)&lt;/p&gt;
&lt;p&gt;Para mais informa&amp;ccedil;&amp;otilde;es vejam o site do evento: &lt;a href="http://gozoomin.com/pizzanight/default.aspx"&gt;http://gozoomin.com/pizzanight/default.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Participem...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gozoomin.com/aggbug.aspx?PostID=69831" width="1" height="1"&gt;</content><author><name>Tiago Barbosa</name><uri>http://gozoomin.com/members/Tiago-Barbosa/default.aspx</uri></author><category term="xna" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/xna/default.aspx" /><category term="Microsoft" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/Microsoft/default.aspx" /><category term="Eventos" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/Eventos/default.aspx" /></entry><entry><title>Aceder ao conteúdo de uma div em Silverlight</title><link rel="alternate" type="text/html" href="/blogs/tbarbosa/archive/2010/01/21/aceder-ao-conte-250-do-de-uma-div-em-silverlight.aspx" /><id>/blogs/tbarbosa/archive/2010/01/21/aceder-ao-conte-250-do-de-uma-div-em-silverlight.aspx</id><published>2010-01-21T20:38:00Z</published><updated>2010-01-21T20:38:00Z</updated><content type="html">&lt;p&gt;Num projecto recente tive a necessidade de criar um gadget em Silverlight que recebia informa&amp;ccedil;&amp;atilde;o textual de uma fonte externa ao Silverlight. &lt;/p&gt;
&lt;p&gt;Aqui existiam algumas formas de o fazer:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Atrav&amp;eacute;s de um ficheiro xml&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Atrav&amp;eacute;s de um webservice&lt;/li&gt;
&lt;li&gt;Atrav&amp;eacute;s de uma div no HTML&lt;/li&gt;
&lt;li&gt;Entre outras...&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Como n&amp;oacute;s&amp;nbsp;quer&amp;iacute;amos&amp;nbsp;manter o c&amp;oacute;digo simples escolhemos a terceira op&amp;ccedil;&amp;atilde;o. Isto pode ser feito de uma maneira bastante simples.&lt;/p&gt;
&lt;p&gt;O que eu fiz foi ent&amp;atilde;o o seguinte:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Criei uma div no HTML com o conte&amp;uacute;do que pretendia passar para o Silverlight e escondi esta div&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="center"&gt;&amp;lt;div id=&amp;quot;a_minha_div&amp;quot; style=&amp;quot;display=none&amp;quot;&amp;gt; conte&amp;uacute;do &amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Na mainPage.xaml.cs acedi ao conte&amp;uacute;do da minha div&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="center"&gt;HtmlElement div = HtmlPage.Document.GetElementById(&amp;quot;a_minha_div&amp;quot;);&lt;/p&gt;
&lt;p align="center"&gt;String conteudo = div.getProperty(&amp;quot;innerHtml&amp;quot;).toString();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Mais um pequeno tutorial com informa&amp;ccedil;&amp;atilde;o valiosa...pode dar muito jeito com coisas simples. Em casos mais complexos &amp;eacute; aconselh&amp;aacute;vel a utiliza&amp;ccedil;&amp;atilde;o de javascript.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gozoomin.com/aggbug.aspx?PostID=69756" width="1" height="1"&gt;</content><author><name>Tiago Barbosa</name><uri>http://gozoomin.com/members/Tiago-Barbosa/default.aspx</uri></author><category term="silverlight" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/silverlight/default.aspx" /><category term="tutoriais" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/tutoriais/default.aspx" /><category term="Html" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/Html/default.aspx" /></entry><entry><title>Mudanças</title><link rel="alternate" type="text/html" href="/blogs/tbarbosa/archive/2010/01/21/mudan-231-as.aspx" /><id>/blogs/tbarbosa/archive/2010/01/21/mudan-231-as.aspx</id><published>2010-01-21T20:26:00Z</published><updated>2010-01-21T20:26:00Z</updated><content type="html">&lt;p&gt;Talvez os mais informados j&amp;aacute; saibam mas para os que ainda n&amp;atilde;o sabem estou a estagiar na Microsoft desde o inicio da semana e est&amp;aacute; a ser uma experi&amp;ecirc;ncia absolutamente fant&amp;aacute;stica. Toda a gente me recebeu bastante bem e o ambiente &amp;eacute; fant&amp;aacute;stico. A parte ainda melhor &amp;eacute; que as minhas fun&amp;ccedil;&amp;otilde;es s&amp;atilde;o na &amp;aacute;rea do Silverlight e tecnologias web por isso estou a adorar. Ainda mais porque estou rodeado de pessoas com um n&amp;iacute;vel de conhecimento a n&amp;iacute;vel de tecnologia que me deixa de boca aberta.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;Eacute; engra&amp;ccedil;ado como nos podemos sentir t&amp;atilde;o diferentes dependendo do contexto em que nos encontramos. Eu vinha de um s&amp;iacute;tio onde era bastante bom no que fazia e agora estou num sitio onde muitas vezes me perco ao tentar acompanhar o&amp;nbsp;racioc&amp;iacute;nio&amp;nbsp;de certas pessoas. Mas foi a minha constante vontade em adquirir conhecimento que me colocou onde estou agora e por isso n&amp;atilde;o podia estar em melhor lugar.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Vou dando not&amp;iacute;cias...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gozoomin.com/aggbug.aspx?PostID=69755" width="1" height="1"&gt;</content><author><name>Tiago Barbosa</name><uri>http://gozoomin.com/members/Tiago-Barbosa/default.aspx</uri></author><category term="Microsoft" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/Microsoft/default.aspx" /></entry><entry><title>Microsoft Webday 2010 no Porto</title><link rel="alternate" type="text/html" href="/blogs/tbarbosa/archive/2010/01/08/microsoft-webday-2010-no-porto.aspx" /><id>/blogs/tbarbosa/archive/2010/01/08/microsoft-webday-2010-no-porto.aspx</id><published>2010-01-08T13:29:00Z</published><updated>2010-01-08T13:29:00Z</updated><content type="html">&lt;div align="center"&gt;
&lt;p&gt;&lt;a href="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/2275.webday.png"&gt;&lt;img src="http://gozoomin.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/2275.webday.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;table cellpadding="0" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;div&gt;&amp;gt;&lt;strong&gt;Participe no grande evento web da Microsoft no Porto a 2 de Fevereiro de 2010!&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;O 
&lt;strong&gt;WebDay traz-lhe as tend&amp;ecirc;ncias e a inova&amp;ccedil;&amp;atilde;o Web&lt;/strong&gt;: o futuro das tecnologias 
como o Silverlight, o Internet Explorer, Expression, ASP.NET e Windows Azure. 1 
dia completo, com tr&amp;ecirc;s tracks, 16 sess&amp;otilde;es e os melhores oradores nacionais. Ter&amp;aacute; 
ainda a oportunidade de partilhar as melhores pr&amp;aacute;ticas com a Comunidade 
Web.&lt;br /&gt;&lt;br /&gt;O Webday est&amp;aacute; desenhado para Web Developers, Criativos, Information 
Architects, Designers Gr&amp;aacute;ficos, profissionais de User Experience, Digital 
Marketeers e. para todos os que partilham o interesse sobre o que o futuro da 
Web nos trar&amp;aacute;. Esta &amp;eacute; a oportunidade de fazer parte do futuro da Web!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mswebday.com"&gt;INSCREVA-SE 
J&amp;Aacute;!&lt;/a&gt; O N&amp;Uacute;MERO DE LUGARES &amp;Eacute; LIMITADO.&amp;nbsp;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gozoomin.com/aggbug.aspx?PostID=69643" width="1" height="1"&gt;</content><author><name>Tiago Barbosa</name><uri>http://gozoomin.com/members/Tiago-Barbosa/default.aspx</uri></author></entry><entry><title>Tutorial 3: O Básico do Multitouch em Silverlight 3</title><link rel="alternate" type="text/html" href="/blogs/tbarbosa/archive/2010/01/04/o-b-225-sico-do-multitouch-em-silverlight-3.aspx" /><id>/blogs/tbarbosa/archive/2010/01/04/o-b-225-sico-do-multitouch-em-silverlight-3.aspx</id><published>2010-01-04T14:46:00Z</published><updated>2010-01-04T14:46:00Z</updated><content type="html">&lt;p&gt;Ultimamente tenho andado a explorar algumas capacidades do Silverlight 3 com as quais ainda n&amp;atilde;o tinha tido qualquer tipo de contacto apesar de as achar bastante interessantes. Uma delas &amp;eacute; o multitouch. Tenho que vos confessar que estou bastante impressionado! &amp;Eacute; uma feature muito interessante e com muito potencial em v&amp;aacute;rias &amp;aacute;reas de aplica&amp;ccedil;&amp;atilde;o.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Para termos acesso a estas funcionalidades temos que ter o Windows 7 instalado no nosso PC e o PC tem que ter suporte para multitouch. A partir da&amp;iacute; a nossa imagina&amp;ccedil;&amp;atilde;o &amp;eacute; o limite.&lt;/p&gt;
&lt;p&gt;Neste post vou mostrar apenas um exemplo muito b&amp;aacute;sico mas que mostra como podemos come&amp;ccedil;ar a desenvolver aplica&amp;ccedil;&amp;otilde;es multitouch em Silverlight 3.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Para come&amp;ccedil;ar a utilizar as capacidades de multitouch temos que adicionar em qualquer parte da nossa aplica&amp;ccedil;&amp;atilde;o o seguinte evento:&lt;/p&gt;
&lt;p align="center"&gt;Touch.FrameReported += &lt;span&gt;new&lt;/span&gt; TouchFrameEventHandler(Touch_FrameReported);&lt;/p&gt;
&lt;p&gt;Aten&amp;ccedil;&amp;atilde;o:&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ao contr&amp;aacute;rio dos eventos do rato (MouseLeftButtonDown, MouseLeftButtonUp, ...), este evento &amp;eacute; global. Ou seja, &amp;eacute; ligado a toda a nossa aplica&amp;ccedil;&amp;atilde;o e n&amp;atilde;o pode ser aplicado apenas a um objecto.&lt;/p&gt;
&lt;p&gt;A partir deste momento a nossa aplica&amp;ccedil;&amp;atilde;o est&amp;aacute; pronta a receber mensagens de toque por parte do hardware. Este evento permite-nos ter acesso a v&amp;aacute;rios m&amp;eacute;todos mas os principais e que aqueles que ser&amp;atilde;o usados neste post s&amp;atilde;o:&amp;nbsp;GetPrimaryTouchPoint e GetTouchPoints.&lt;/p&gt;
&lt;p&gt;O GetPrimaryTouchPoint devolve o primeiro ponto que foi tocado no ecr&amp;atilde; numa poss&amp;iacute;vel sequ&amp;ecirc;ncia de toques. E o GetTouchPoints devolve uma colec&amp;ccedil;&amp;atilde;o de todos os pontos que est&amp;atilde;o a ser pressionados.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ambos os m&amp;eacute;todos devolvem objectos do tipo TouchPoint. Este obejecto permite-nos aceder a quatro valores.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Position&lt;/strong&gt; - Posi&amp;ccedil;&amp;atilde;o do toque em rela&amp;ccedil;&amp;atilde;o a um determinado offset. Se passarmos &lt;i&gt;null &lt;/i&gt;ao chamar a fun&amp;ccedil;&amp;atilde;o o valor devolvido &amp;eacute; absoluto.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Action&lt;/strong&gt;&amp;nbsp;- Existem tr&amp;ecirc;s tipos de toque: Down, Move e Up. &amp;Eacute; bastante f&amp;aacute;cil perceber o que faz qualquer um destes eventos mas o evento Move n&amp;atilde;o &amp;eacute; t&amp;atilde;o trivial como parece. O evento Move est&amp;aacute; sempre a ser chamado mesmo que a posi&amp;ccedil;&amp;atilde;o do toque n&amp;atilde;o seja alterada. Ou seja, existe um &lt;i&gt;refresh&lt;/i&gt; constante deste evento.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TouchDevice&lt;/strong&gt; - &amp;Eacute; o ID &amp;uacute;nico que o sistema operativo atribui ao dispositivo que est&amp;aacute; a servir para o toque.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DirectlyOver&lt;/strong&gt; - Devolve o objecto que est&amp;aacute; directamente no s&amp;iacute;tio pressionado.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Um pequeno exemplo de utiliza&amp;ccedil;&amp;atilde;o &amp;eacute;:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;&lt;i&gt;public MainPage()&lt;/i&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span id="lnum2"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;i&gt; {&lt;/i&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span id="lnum3"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;i&gt;     InitializeComponent();&lt;/i&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span id="lnum4"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;i&gt;     Touch.FrameReported += new TouchFrameEventHandler(Touch_FrameReported);&lt;/i&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;i&gt; }&lt;/i&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;i&gt;&amp;nbsp; &lt;/i&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;i&gt; void Touch_FrameReported(object sender, TouchFrameEventArgs e)&lt;/i&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;i&gt; {&lt;/i&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;i&gt;    TouchPointCollection points = e.GetTouchPoints(null);
    TouchPoint primaryPoint = e.GetPrimaryTouchPoint(null);

            if (null != primaryPoint)
            {
                if (primaryPoint.Action == TouchAction.Down)
                    e.SuspendMousePromotionUntilTouchUp();

                switch (primaryPoint.Action)
                {
                    case TouchAction.Down:
                        // fazer alguma coisa
                        break;

                   case TouchAction.Up:&lt;/i&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;i&gt;                        // fazer alguma coisa
                        break;&lt;/i&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;i&gt;&lt;pre&gt;&lt;i&gt;               case TouchAction.Move:
                        // fazer alguma coisa
                        break;&lt;/i&gt;&lt;/pre&gt;
&lt;/i&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;i&gt;                }
            }&lt;/i&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;i&gt; }&lt;/i&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;p&gt;Com este pequeno exemplo estamos a aceder a todos os pontos que s&amp;atilde;o pressionados no ecr&amp;atilde;. Agora, e tal como disse no &amp;iacute;nicio do post, o limite &amp;eacute; a imagina&amp;ccedil;&amp;atilde;o. &lt;/p&gt;
&lt;p&gt;Criem e depois divulguem pois o conhecimento s&amp;oacute; serve de alguma coisa se o conseguirmos passar para as outras pessoas... ;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gozoomin.com/aggbug.aspx?PostID=69621" width="1" height="1"&gt;</content><author><name>Tiago Barbosa</name><uri>http://gozoomin.com/members/Tiago-Barbosa/default.aspx</uri></author><category term="silverlight" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/silverlight/default.aspx" /><category term="Windows 7" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/Windows+7/default.aspx" /><category term="Multi Touch" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/Multi+Touch/default.aspx" /></entry><entry><title>Microsoft Surface SDK agora disponível para todos</title><link rel="alternate" type="text/html" href="/blogs/tbarbosa/archive/2009/12/04/microsoft-surface-sdk-agora-dispon-237-vel-para-todos.aspx" /><id>/blogs/tbarbosa/archive/2009/12/04/microsoft-surface-sdk-agora-dispon-237-vel-para-todos.aspx</id><published>2009-12-04T23:24:00Z</published><updated>2009-12-04T23:24:00Z</updated><content type="html">&lt;p align="center"&gt;&lt;img src="http://gozoomin.com/resized-image.ashx/__size/281x301/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa/3441.microsoft_5F00_surface_5F00_logo.jpg" border="0" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Gostavas de desenvolver para a Microsoft Surface mas n&amp;atilde;o tens uma? Agora j&amp;aacute; &amp;eacute; poss&amp;iacute;vel!!&lt;/p&gt;
&lt;p&gt;No passado m&amp;ecirc;s de Novembro, no PDC 2009 foi lan&amp;ccedil;ado o Microsoft Surface Software Development Kit (SDK) Workstation Edition. Este SDK permite a qualquer pessoa desenvolver aplica&amp;ccedil;&amp;otilde;es para a Surface sem que seja necess&amp;aacute;rio ter uma. Para fazer o download basta seguir este &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=3db8987b-47c8-46ca-aafb-9c3b36f43bcc&amp;amp;displaylang=en" title="link" target="_blank"&gt;link&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Experimentem, vale a pena...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gozoomin.com/aggbug.aspx?PostID=69481" width="1" height="1"&gt;</content><author><name>Tiago Barbosa</name><uri>http://gozoomin.com/members/Tiago-Barbosa/default.aspx</uri></author><category term="SDK" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/SDK/default.aspx" /><category term="Microsoft Surface" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/Microsoft+Surface/default.aspx" /></entry><entry><title>Imagine Cup RoadShow @UBI </title><link rel="alternate" type="text/html" href="/blogs/tbarbosa/archive/2009/11/07/imagine-cup-roadshow-ubi.aspx" /><id>/blogs/tbarbosa/archive/2009/11/07/imagine-cup-roadshow-ubi.aspx</id><published>2009-11-07T19:08:00Z</published><updated>2009-11-07T19:08:00Z</updated><content type="html">&lt;p&gt;No dia 13 de Outubro o roadshow do Imagine Cup passou na UBI (Universidade da Beira Interior, Covilh&amp;atilde;). Como MSP (Microsoft Student Partner) da UBI coube-me a mim a tarefa de organizar tal evento. O programa deste evento foi o seguinte:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;1&amp;ordm; - O meu colega Jo&amp;atilde;o Ant&amp;atilde;o da Microsoft apresentou o Imagine Cup 2010 a todos os presentes no audit&amp;oacute;rio. Houve muita gente interessada e nos dias seguintes tenho ouvido muita gente a dizer-me que vai participar este ano. ;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;2&amp;ordm; - A equipa do Sharing Spot (Eu, Andr&amp;eacute; Barbosa e David Mota), 2&amp;ordf; classificada a n&amp;iacute;vel nacional na competi&amp;ccedil;&amp;atilde;o do ano passado, falaram um pouco da sua experi&amp;ecirc;ncia na competi&amp;ccedil;&amp;atilde;o, do pr&amp;eacute; e p&amp;oacute;s Imagine Cup.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;3&amp;ordm; - Sess&amp;atilde;o T&amp;eacute;cnica sobre Silverlight apresentada por mim.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Essencialmente &amp;eacute; este 3&amp;ordm; ponto que me &amp;quot;obrigou&amp;quot; a fazer este post. Nesta sess&amp;atilde;o criei uma loja de m&amp;uacute;sica virtual utilizando o SketchFlow. Uma aplica&amp;ccedil;&amp;atilde;o Web bastante simples onde &amp;eacute; poss&amp;iacute;vel comprar instrumentos m&amp;uacute;sicais. &lt;/p&gt;
&lt;p&gt;Para iniciar a elabora&amp;ccedil;&amp;atilde;o deste projecto basta abrir o Expression Blend 3 e seleccionar um projecto Silverlight + SketchFlow. Agora pretendemos adicionar um fundo ao nosso website. Para isso basta arrastarmos uma imagem previamente adicionada ao projecto para o nosso &amp;quot;canvas&amp;quot;. Como podem reparar a imagem n&amp;atilde;o fica logo posicionada da forma que pretendemos, logo temos que pressionar com o bot&amp;atilde;o direito do rato sobre a imagem e seleccionar &amp;quot;Auto-size -&amp;gt; Fill&amp;quot;. Desta forma temos o nosso wallpaper bem posicionado como podemos ver na imagem em baixo.&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.RoadShow_4000_UBI/Wallpaper1.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;De seguida pretendemos inserir um menu que nos vai permitir navegar no nosso site. Este menu vai ser bastante simples sendo que vai ser constituido apenas por um rectangulo que vai servir para limitar o menu e 6 bot&amp;otilde;es. N&amp;oacute;s n&amp;atilde;o vamos trabalhar todas as p&amp;aacute;ginas que vamos criar, apenas vamos trabalhar a parte da loja mas criamos de qualquer das formas os bot&amp;otilde;es para navegar entre as p&amp;aacute;ginas. Os bot&amp;otilde;es que vamos criar s&amp;atilde;o os seguintes:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; - Home&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; - Store&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; - Clinic&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; - Blog&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; - Location&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; - Contacts&lt;/p&gt;
&lt;p&gt;O aspecto da p&amp;aacute;gina que cri&amp;aacute;mos ser&amp;aacute; o exibido na imagem em baixo.&amp;nbsp;&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.RoadShow_4000_UBI/homeWithMenu.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;De reparar que o menu que acab&amp;aacute;mos de criar ainda n&amp;atilde;o nos permite navegar no site por duas raz&amp;otilde;es: primeiro porque ainda n&amp;atilde;o cri&amp;aacute;mos as p&amp;aacute;ginas para as quais queremos navegar e em segundo porque ainda n&amp;atilde;o dissemos aos bot&amp;otilde;es para onde queremos que eles naveguem.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Por isso vamos agora criar as nossas p&amp;aacute;ginas. Como podemos ver na imagem mostrada em baixo, ao passar com o rato sobre o nosso ecr&amp;atilde; principal a primeiro op&amp;ccedil;&amp;atilde;o que nos aparece &amp;eacute; &amp;quot;Create a connected screen&amp;quot;, seleccionamos essa op&amp;ccedil;&amp;atilde;o e arrastamos para outra posi&amp;ccedil;&amp;atilde;o do SketchFlow Map. Assim criamos um novo ecr&amp;atilde;. Agora vamos replicar esta ac&amp;ccedil;&amp;atilde;o para os restantes bot&amp;otilde;es e ainda alterar o nome dos nossos ecr&amp;atilde;s. O resultado final &amp;eacute; o apresentado em baixo.&amp;nbsp;&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.RoadShow_4000_UBI/addScreens.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;O passo seguinte &amp;eacute; adicionar um wallpaper nos ecr&amp;atilde;s que acab&amp;aacute;mos de criar. Para isso vamos introduzir a no&amp;ccedil;&amp;atilde;o de component screen. Um component screen &amp;eacute; um elemento que &amp;eacute; comum a todos os ecr&amp;atilde;s aos quais est&amp;aacute; ligado. Para isso vamos adicionar o novo wallpaper a um dos ecr&amp;atilde;s criados recentemente da mesma forma que fizemos no ecr&amp;atilde; principal. De seguida queremos criar ent&amp;atilde;o o nosso componente screen. Para isso carregamos com o bot&amp;atilde;o direito do rato sobre a imagem e seleccionamos &amp;quot;Make Into ComponentScreen...&amp;quot; como podemos ver no ecr&amp;atilde; em baixo. Depois de lhe termos dado um nome vemos um novo componente de cor verde no SketchFlow Map. &lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.RoadShow_4000_UBI/createComponentScreen.png" alt="" /&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.RoadShow_4000_UBI/mapWithUnconnectedComponentScreen.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Agora para termos a imagem nos ecr&amp;atilde;s todos temos que seleccionar o 3&amp;ordm; &amp;iacute;cone do component screen que cri&amp;aacute;mos anteriormente e arrastar para cima do ecr&amp;atilde; ao qual pretendemos ligar. Assim obtemos a imagem no ecr&amp;atilde;. De reparar que a imagem n&amp;atilde;o fica posicionada no mesmo sitio em todos os ecr&amp;atilde;s. &amp;Eacute; necess&amp;aacute;rio reposicion&amp;aacute;-la da mesma forma que fizemos no primeiro ecr&amp;atilde;. O resultado final &amp;eacute; o apresentado em baixo.&amp;nbsp;&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.RoadShow_4000_UBI/mapWithConnectedComponentScreen.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;De seguida vamos criar em todos os ecr&amp;atilde;s um menu que nos vai permitir navegar entre os v&amp;aacute;rios ecr&amp;atilde;s da nossa Aplica&amp;ccedil;&amp;atilde;o Web. Como cri&amp;aacute;mos um menu logo no primeiro ecr&amp;atilde; vamos ent&amp;atilde;o aproveit&amp;aacute;-lo para criar um novo component screen de nome &amp;quot;NavigationMenu&amp;quot;. O m&amp;eacute;todo de cria&amp;ccedil;&amp;atilde;o &amp;eacute; o mesmo que foi utilizado anteriormente com o wallpaper e o resultado final &amp;eacute; o apresentado de seguida.&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.RoadShow_4000_UBI/fullMap.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;A partir deste momento temos o menu de navega&amp;ccedil;&amp;atilde;o em todas as janelas ao qual este est&amp;aacute; ligado. Tal como fizemos com o wallpaper temos que posicionar o menu onde pretendermos pois o Blend n&amp;atilde;o posiciona o objecto no mesmo sitio onde ele foi criado. Agora, se executarmos reparamos que ao utilizarmos o menu ainda n&amp;atilde;o conseguimos navegar para lado nenhum, isto porque ainda n&amp;atilde;o atribuimos fun&amp;ccedil;&amp;otilde;es aos bot&amp;otilde;es. Pois &amp;eacute; isso mesmo que vamos fazer de seguida.&lt;/p&gt;
&lt;p&gt;Para dizermos a um bot&amp;atilde;o para que ecr&amp;atilde; este deve navegar &amp;eacute; bastante simples como podemos ver no ecr&amp;atilde; em baixo. Basta irmos para o component screen criado anteriormente e sobre o bot&amp;atilde;o pressionamos com o bot&amp;atilde;o direito do rato e seleccionamos &amp;quot;Navigate To&amp;quot;. Aqui &amp;eacute; s&amp;oacute; escolher para que ecr&amp;atilde; queremos navegar. De reparar que ao alterarmos as op&amp;ccedil;&amp;otilde;es de navega&amp;ccedil;&amp;atilde;o do menu estas s&amp;atilde;o alteradas em todo o lado onde o menu esteja presente.&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.RoadShow_4000_UBI/navigateTo.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;A partir deste momento j&amp;aacute; temos uma aplica&amp;ccedil;&amp;atilde;o completamente naveg&amp;aacute;vel. Por isso passamos &amp;agrave; parte seguinte que &amp;eacute; criar a parte da loja online. Para isso temos que abrir o ficheiro &amp;quot;Store&amp;quot;. Neste ecr&amp;atilde; vamos querer inserir um TextBlock (com o nome da p&amp;aacute;gina), duas Listboxes (uma onde ir&amp;atilde;o estar os todos os objectos da loja e outra onde estar&amp;atilde;o os objectos que queremos comprar) e um bot&amp;atilde;o (que ir&amp;aacute; permitir fazer as compras). O aspecto final dever&amp;aacute; ser o seguinte:&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.RoadShow_4000_UBI/storeFirst.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;De modo a adicionarmos dados &amp;agrave;s nossas Listboxes vamos utilizar uma caracteristica do Expression Blend 3 que &amp;eacute; o SampleData. O SampleData permite-nos simular uma base de dados. Basta-nos definir uma estrutura de dados e o Expression Blend gera os valores automaticamente por n&amp;oacute;s. Desta forma torna-se muito f&amp;aacute;cil utilizarmos dados na nossa aplica&amp;ccedil;&amp;atilde;o. &lt;/p&gt;
&lt;p&gt;Para criar este SampleData basta definir um novo sample data como est&amp;aacute; exibido na imagem em baixo. Depois de dar-mos um nome ao Sample Data Source este &amp;eacute; criado automaticamente criando logo uma colec&amp;ccedil;&amp;atilde;o com duas propriedades. Aqui vamos definir uma estrutura de dados de acordo com as nossas necessidades. Para o nosso caso vamos definir 4 campos: nome (String), descri&amp;ccedil;&amp;atilde;o (String), preco (String -&amp;gt; Price) e imagem (Image). Para a o campo imagem podemos definir as nossas pr&amp;oacute;prias imagens ou deixar que o Blend as gere automaticamente. Para isso basta definir-mos a pasta onde o Blend vai buscar as imagens. O resultado final para o SampleData deve ser o que est&amp;aacute; nas imagens em baixo.&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.RoadShow_4000_UBI/addAndDefineSampleData.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Agora que temos a nossa &amp;quot;base de dados&amp;quot; criada temos que adicionar os dados &amp;agrave; Listbox. Para isso basta seleccionar a colec&amp;ccedil;&amp;atilde;o e arrastar para a Listbox como podemos ver na imagem em baixo.&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.RoadShow_4000_UBI/bindToListBox.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;A partir deste momento temos os nossos dados na ListBox mas o aspecto n&amp;atilde;o &amp;eacute; o pretendido. Por isso vamos editar o template dos items da ListBox. Isto &amp;eacute; feito de uma forma muito simples tal como podemos ver na imagem exibida em baixo.&amp;nbsp;&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.RoadShow_4000_UBI/editTemplate.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Aqui podemos editar o ItemTemplate da nossa Listbox de uma forma bastante f&amp;aacute;cil. Basta alterar as propriedades dos nossos elementos e temos automaticamente um novo aspecto para cada item da base de dados. Eu vou pretender fazer algo mais complexo para ficar com um aspecto mais &amp;quot;user-friendly&amp;quot;. O resultado final dever&amp;aacute; ser o apresentado em baixo.&amp;nbsp;&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.RoadShow_4000_UBI/itemTemplate.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Como podem reparar no template que eu criei apenas podem ver a imagem, o nome e o pre&amp;ccedil;o do objecto. E porqu&amp;ecirc;?? Porque eu aqui decidi mostrar-vos mais umas novidades desta nova vers&amp;atilde;o do Silverlight 3. &lt;img src="http://gozoomin.com/emoticons/emotion-1.gif" alt="Smile" /&gt; Estas s&amp;atilde;o os States e os Behaviors. Os States s&amp;atilde;o os estados poss&amp;iacute;veis de um objecto e os Behaviors s&amp;atilde;o os comportamentos que um objecto tem.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Para vos mostrar estas funcionalidades eu defini a altura (&amp;quot;Height&amp;quot;) do TextBlock &amp;quot;descricao&amp;quot; a 0. Agora vou definir os estados poss&amp;iacute;veis deste objecto. Como podem ver na barra de ferramentas no canto superior esquerdo t&amp;ecirc;m uma tab &amp;quot;States&amp;quot;. &amp;Eacute; aqui que vamos adicionar os nossos estados. Mas antes disso vamos converter o 2&amp;ordm; StackPanel que cont&amp;eacute;m o &amp;quot;nome&amp;quot;, &amp;quot;descricao&amp;quot; e &amp;quot;preco&amp;quot; para um UserControl para se tornar mais f&amp;aacute;cil tratar dos estados. Este passo &amp;eacute; muito simples. Basta pressionar com o bot&amp;atilde;o direito do rato sobre o StackPanel e escolher &amp;quot;Make Into UserControl&amp;quot;. Aqui decidi atribuir-lhe o nome &amp;quot;SlidingStackPanel&amp;quot;. Agora que j&amp;aacute; temos o nosso UserControl podemos ent&amp;atilde;o adicionar os estados ao mesmo.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Em primeiro lugar temos que adicionar um VisualStateGroup que vai servir para agrupar todos os nossos estados. Para isso basta pressionar o bot&amp;atilde;o &amp;quot;Add state group&amp;quot; tal como mostra a imagem em baixo. De seguida temos que adicionar os nossos estados. Para isso basta pressionar o bot&amp;atilde;o &amp;quot;Add State&amp;quot;. No nosso caso vamos querer 2 estados: On (quando o TextBlock est&amp;aacute; vis&amp;iacute;vel) e Off (quando o Textblock est&amp;aacute; escondido). Depois de criarmos os 2 estados vamos ent&amp;atilde;o definir as propriedades dos mesmos. Com o estado &amp;quot;On&amp;quot; seleccionado vamos alterar a sua propriedade &amp;quot;Height&amp;quot; para 100. E com o estado &amp;quot;Off&amp;quot; seleccionado vamos alterar a propriedade &amp;quot;Height&amp;quot; para qualquer valor e depois voltamos a colocar este valor a 0. Este &amp;eacute; um pequeno truque para que o Expression Blend grave uma keyframe na Timeline de modo a que o Silverlight reconhe&amp;ccedil;a que existe uma altera&amp;ccedil;&amp;atilde;o de estado. Para a altera&amp;ccedil;&amp;atilde;o de estado n&amp;atilde;o ser feita t&amp;atilde;o bruscamente podemos ainda adicionar uma transi&amp;ccedil;&amp;atilde;o. Para isso em cada um dos estados podemos adicionar uma transi&amp;ccedil;&amp;atilde;o, definir o tempo da mesma e ainda definir o tipo de anima&amp;ccedil;&amp;atilde;o como podemos ver em baixo.&amp;nbsp;&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.RoadShow_4000_UBI/addStates.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Neste momento temos os estados definidos. Agora vamos aproveitar um behavior que j&amp;aacute; vem como base no Expression Blend 3 que &amp;eacute; o &amp;quot;GoToStateAction&amp;quot;. Este Behavior permite alterar o estado de um objecto em runtime. Como podem ver em baixo eu atribui 2 Behaviors &amp;agrave; imagem, um quando o rato &amp;eacute; colocado sobre a imagem e outro quando o rato sai da imagem. Ao passar por cima da imagem &amp;eacute; mostrada a descri&amp;ccedil;&amp;atilde;o do objecto e ao sair a descri&amp;ccedil;&amp;atilde;o &amp;eacute; novamente escondida.&amp;nbsp;&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.RoadShow_4000_UBI/addBehaviors.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Bem, parece que cheg&amp;aacute;mos ao fim. Espero que tenham gostado tanto como os meus colegas da UBI que estavam a assistir a esta sess&amp;atilde;o. Comentem e fa&amp;ccedil;am sugest&amp;otilde;es se tiverem alguma coisa que estejam interessados em ver neste blog. Pode ser que eu consiga ajudar.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;No pr&amp;oacute;ximo post vamos falar de Silverlight Business Applications e de DataBinding. Estes temas foram abordados por mim num workshop no ISCTE.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Stay tuned...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gozoomin.com/aggbug.aspx?PostID=68203" width="1" height="1"&gt;</content><author><name>Tiago Barbosa</name><uri>http://gozoomin.com/members/Tiago-Barbosa/default.aspx</uri></author><category term="silverlight" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/silverlight/default.aspx" /><category term="Expression Blend" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/Expression+Blend/default.aspx" /><category term="SketchFlow" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/SketchFlow/default.aspx" /><category term="SampleData" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/SampleData/default.aspx" /><category term="Imagine Cup" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/Imagine+Cup/default.aspx" /></entry><entry><title>Tutorial 2: SketchFlow Player</title><link rel="alternate" type="text/html" href="/blogs/tbarbosa/archive/2009/10/05/tutorial-2-sketchflow-player.aspx" /><id>/blogs/tbarbosa/archive/2009/10/05/tutorial-2-sketchflow-player.aspx</id><published>2009-10-05T10:15:00Z</published><updated>2009-10-05T10:15:00Z</updated><content type="html">&lt;p&gt;Neste tutorial vou falar-vos das capacidades do SketchFlow Player. Tal como disse no &amp;uacute;ltimo post o SketchFlow &amp;eacute; uma ferramenta de prototipagem e o SketchFlow Player &amp;eacute; o ambiente onde uma aplica&amp;ccedil;&amp;atilde;o SketchFlow vai correr.&lt;/p&gt;
&lt;p&gt;O SketchFlow Player corre sobre o browser e &amp;eacute; multi-plataforma. Isto &amp;eacute; extremamente &amp;uacute;til pois podemos desenvolver um prot&amp;oacute;tipo extremamente complexo e apenas passamos ao cliente uma p&amp;aacute;gina web. O SketchFlow Player tem tamb&amp;eacute;m algumas ferramentas muito boas e simples para criar notas e feedback. Tal como podemos ver na figura em baixo temos canetas para assinalarmos no &amp;quot;canvas&amp;quot; os locais que t&amp;ecirc;m que ser melhorados e depois podemos associar feedback a esses mesmos desenhos.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.SketchFlow+Tutorial+Images.Tutorial+2/1_2D002D002D00_feedback_2D00_tools.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;Eacute; poss&amp;iacute;vel ver tamb&amp;eacute;m o mapa do nosso projecto tal como conseguimos no Blend. Isto facilita que o cliente consiga ver a estrutura e o &amp;quot;workflow&amp;quot; da aplica&amp;ccedil;&amp;atilde;o.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.SketchFlow+Tutorial+Images.Tutorial+2/2_2D002D002D00_mapa.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Como podemos observar nas imagens em baixo inserimos 2 esquemas no nosso &amp;quot;canvas&amp;quot; e associados a estes 2 coment&amp;aacute;rios. Assim o cliente diz o que pretende ver alterado na aplica&amp;ccedil;&amp;atilde;o assinalando o local que est&amp;aacute; mal e criando coment&amp;aacute;rios associados a explicar o que est&amp;aacute; mal.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.SketchFlow+Tutorial+Images.Tutorial+2/4_2D002D002D00_feedback_2D00_drawings.png" alt="" /&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.SketchFlow+Tutorial+Images.Tutorial+2/3_2D002D002D00_feedback_2D00_text.png" alt="" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Este coment&amp;aacute;rios podem ser vistos ou n&amp;atilde;o. Existe um &amp;iacute;cone que mostra ou esconde os &amp;quot;desenhos&amp;quot; permitindo assim que a aplica&amp;ccedil;&amp;atilde;o posso continuar a ser visionada sem o transtorno de ter esquemas extra no ecr&amp;atilde;.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.SketchFlow+Tutorial+Images.Tutorial+2/5_2D002D002D00_show_2D00_feedback_2D00_icon.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Agora uma das partes mais interessantes do SketchFlow Player &amp;eacute; o facto de podermos exportar o Feedback. Para isso basta seleccionar o &amp;iacute;cone vis&amp;iacute;vel na imagem em baixo. Preencher o nome do autor que inseriu o feedback e gravar o ficheiro no disco tal como &amp;eacute; explicado nas seguintes imagens.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.SketchFlow+Tutorial+Images.Tutorial+2/6_2D002D002D00_export_2D00_feedback_2D00_icon.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.SketchFlow+Tutorial+Images.Tutorial+2/7_2D002D002D00_feedback_2D00_author_2D00_informa.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.SketchFlow+Tutorial+Images.Tutorial+2/8_2D002D002D00_sketchFeedback_2D00_SaveDial.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Agora que o cliente j&amp;aacute; gerou o ficheiro de feedback pode envi&amp;aacute;-lo para quem criou a aplica&amp;ccedil;&amp;atilde;o para que este possa carreg&amp;aacute;-lo para o projecto no Expression Blend e possa assim ver as altera&amp;ccedil;&amp;otilde;es que o cliente pretende efectuar. Este processo de abrir os ficheiros de feedback dentro do Expression Blend &amp;eacute; muito simples como &amp;eacute; podemos ver em baixo. Primeiro temos que verificar que a janela de Feedback est&amp;aacute; vis&amp;iacute;vel no nosso projecto. Por defeito n&amp;atilde;o est&amp;aacute; vis&amp;iacute;vel.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.SketchFlow+Tutorial+Images.Tutorial+2/9_2D002D002D00_feedback_2D00_window.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Depois de estarmos na janela temos que adicionar o ficheiro. Para isso seleccionados o &amp;iacute;cone &amp;quot;+&amp;quot; no canto superior direito da janela de Feedback e vamos buscar o ficheiro que o cliente nos passou. A partir deste momento temos o feedback do nosso cliente no ecr&amp;atilde;.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.SketchFlow+Tutorial+Images.Tutorial+2/10_2D002D002D00_add_2D00_feedback.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Tal como no SketchFlow Player podemos retirar a visibilidade aos &amp;quot;desenhos&amp;quot; para continuarmos a editar o nosso projecto normalmente e fazer as altera&amp;ccedil;&amp;otilde;es que o cliente pretende. Uma coisa a reparar &amp;eacute; o facto de no mapa aparecerem distinguidos os ecr&amp;atilde;s que t&amp;ecirc;m coment&amp;aacute;rios com um &amp;iacute;cone de uma l&amp;acirc;mpada.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.SketchFlow+Tutorial+Images.Tutorial+2/11_2D002D002D00_feedback_2D00_in_2D00_Blend.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Outra funcionalidade bastante interessante &amp;eacute; a possibilidade de podermos exportar o projecto para Word. Isto vai criar um relat&amp;oacute;rio com todos os coment&amp;aacute;rios e imagens do nosso projecto. Isto &amp;eacute; muito bom pois um cliente pode querer analisar a aplica&amp;ccedil;&amp;atilde;o no papel em vez de analisar no SketchFlow Player e ao ter acesso a este relat&amp;oacute;rio pode faz&amp;ecirc;-lo.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.SketchFlow+Tutorial+Images.Tutorial+2/12_2D002D002D00_export_2D00_to_2D00_word.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;E est&amp;aacute; assim explicado o funcionamento do SketchFlow Player...&lt;/p&gt;
&lt;p&gt;Comentem ;)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gozoomin.com/aggbug.aspx?PostID=62246" width="1" height="1"&gt;</content><author><name>Tiago Barbosa</name><uri>http://gozoomin.com/members/Tiago-Barbosa/default.aspx</uri></author><category term="silverlight" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/silverlight/default.aspx" /><category term="Expression Blend" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/Expression+Blend/default.aspx" /><category term="SketchFlow" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/SketchFlow/default.aspx" /><category term="SketchFlow Player" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/SketchFlow+Player/default.aspx" /></entry><entry><title>Tutorial 1: Introdução ao SketchFlow</title><link rel="alternate" type="text/html" href="/blogs/tbarbosa/archive/2009/10/03/tutorial-1-introdu-231-227-o-ao-sketchflow.aspx" /><id>/blogs/tbarbosa/archive/2009/10/03/tutorial-1-introdu-231-227-o-ao-sketchflow.aspx</id><published>2009-10-03T21:36:00Z</published><updated>2009-10-03T21:36:00Z</updated><content type="html">&lt;p&gt;Depois do REMIX&amp;#39;09, em Lisboa, onde assisti a algumas sess&amp;otilde;es muito interessantes sobre Expression Blend, Microsoft Surface e User Experience n&amp;atilde;o resisti a fazer um post sobre o que mais me fascinou nestas sess&amp;otilde;es. E o que mais me fascinou como devem imaginar pelo titulo do post foi o SketchFlow. O orador desta sess&amp;atilde;o foi o Arturo Toledo que &amp;eacute; Product Manager na Microsoft em Seattle para a equipa de UX Platform &amp;amp; Tools&amp;nbsp;(Silverlight, WPF, Expression...).&lt;/p&gt;
&lt;p&gt;O SketchFlow &amp;eacute; uma ferramenta de prototipagem presente no Expression Blend. Esta ferramenta &amp;eacute; muito boa para criar prot&amp;oacute;tipos de aplica&amp;ccedil;&amp;otilde;es para mostrar aos compradores da aplica&amp;ccedil;&amp;atilde;o. Assim evita-se muito tempo perdido ao alterar constantemente uma aplica&amp;ccedil;&amp;atilde;o pois podemos, a partir de um sketch book, incoporar ac&amp;ccedil;&amp;otilde;es e eventos. Ou seja, temos uma aplica&amp;ccedil;&amp;atilde;o completamente funcional mas com o aspecto de um livro de rascunhos sendo que esta aplica&amp;ccedil;&amp;atilde;o &amp;eacute; facilmente modific&amp;aacute;vel.&lt;/p&gt;
&lt;p&gt;Neste primeiro tutorial n&amp;atilde;o vamos avan&amp;ccedil;ar muito nas capacidades do SktechFlow. Vamos criar uma aplica&amp;ccedil;&amp;atilde;o muito simples em que o utilizador vai ter uma p&amp;aacute;gina para fazer o login. Caso falhe ser&amp;aacute; levado para um ecr&amp;atilde; vermelho e no caso positivo ser&amp;aacute; levado para um ecr&amp;atilde; verde.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Para criar um projecto SketchFlow basta escolher criar um novo projecto e depois escolher Silverlight 3 SketchFlow Project ou WPF SketchFlow Project dependendo do tipo de projecto que pretenda. No nosso caso pretendemos criar um projecto de SketchFlow para Silverlight 3.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.SketchFlow+Tutorial+Images.Tutorial+1/2-_2D00_-create-sketchflow-project.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Ap&amp;oacute;s a cria&amp;ccedil;&amp;atilde;o do projecto aparece-nos o nosso workspace. Como podemos ver do lado esquerdo temos o nosso projecto, os &amp;quot;assets&amp;quot; e os estados. Na tab de projectos temos todos os ficheiros que constituem o nosso projecto recentemente criado. Na tab &amp;quot;assets&amp;quot; temos todos os elementos que podemos inserir no nosso projecto, entre os quais controlos, ecr&amp;atilde;s, estilos, comportamentos, efeitos, etc. De todos estes s&amp;oacute; vamos abordar os controlos neste primeiro tutorial. &lt;/p&gt;
&lt;p&gt;Um projecto de SketchFlow permite-nos inserir controlos normais mas uma das coisas que mais me chamou a aten&amp;ccedil;&amp;atilde;o &amp;eacute; o facto de termos controlos do tipo esbo&amp;ccedil;o. Ou seja, controlos em que o template faz com que estes pare&amp;ccedil;am desenhados com l&amp;aacute;pis. Para aceder a estes controlos basta aceder &amp;agrave; categoria &amp;quot;SketchStyles&amp;quot; como est&amp;aacute; na imagem em baixo.&lt;/p&gt;
&lt;p&gt;Outra coisa que este SketchFlow traz &amp;eacute; o mapa de SketchFlow. Aqui podemos criar muito facilmente transi&amp;ccedil;&amp;otilde;es entre os v&amp;aacute;rios ecr&amp;atilde;s. Mas iremos abordar com mais profundidade este tema mais &amp;agrave; frente neste mesmo tutorial.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.SketchFlow+Tutorial+Images.Tutorial+1/3_2D002D002D00_workspace.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Agora que j&amp;aacute; sabemos onde est&amp;atilde;o os nossos controlos vamos criar um simples formul&amp;aacute;rio onde o utilizador ir&amp;aacute; preencher o seu nome de utilizador e password e depois carrega num bot&amp;atilde;o para proceder &amp;agrave; valida&amp;ccedil;&amp;atilde;o. De notar que neste tutorial n&amp;atilde;o vamos tratar da parte de comportamentos. Ser&amp;aacute; um tema para um tutorial mais avan&amp;ccedil;ado.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;O resultado final do formul&amp;aacute;rio &amp;eacute; apresentado na imagem em baixo.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.SketchFlow+Tutorial+Images.Tutorial+1/4-_2D00_-form.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Agora que j&amp;aacute; temos o nosso formul&amp;aacute;rio criado temos que criar os ecr&amp;atilde;s seguintes e as respectivas transi&amp;ccedil;&amp;otilde;es. Para isso vamos utilizar o mapa.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ao passar o cursor do rato por cima do &amp;quot;Screen 1&amp;quot; (o nosso ecr&amp;atilde; principal) aparecem-nos v&amp;aacute;rias op&amp;ccedil;&amp;otilde;es: Criar um ecr&amp;atilde; ligado, ligar a um ecr&amp;atilde; existente, criar e inserir uma componente de ecr&amp;atilde; e alterar a tag visual. Se decidirmos criar um ecr&amp;atilde; ligado vai ser criado um novo ecr&amp;atilde; ligado a este. Se decidirmos ligar a um ecr&amp;atilde; existente, este ir&amp;aacute; ficar ligado ao outro ecr&amp;atilde; que escolhermos. A terceira op&amp;ccedil;&amp;atilde;o permite-nos ter elementos que s&amp;atilde;o comuns a todos os ecr&amp;atilde;s (ex: Log&amp;oacute;tipo da empresa). E a &amp;uacute;ltima op&amp;ccedil;&amp;atilde;o permite-nos alterar a cor do objecto para ser assim mais f&amp;aacute;cil identificar que tipo de objecto &amp;eacute;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.SketchFlow+Tutorial+Images.Tutorial+1/5_2D002D002D00_Map.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;No nosso caso, como &amp;eacute; poss&amp;iacute;vel ver na imagem em baixo, cri&amp;aacute;mos 3 ecr&amp;atilde;s. O &amp;quot;Screen 1&amp;quot; que &amp;eacute; o nosso ecr&amp;atilde; principal onde est&amp;aacute; o formul&amp;aacute;rio, o &amp;quot;Sucesso&amp;quot; caso as credenciais estejam correctas e &amp;quot;Falha&amp;quot; caso a password ou nome de utilizador estejam errados. De reparar que alter&amp;aacute;mos as cores para melhor compreender o diagrama. Neste caso n&amp;atilde;o era muito dificil de perceber mas em esquemas mais complexas torna-se mais complicado.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.SketchFlow+Tutorial+Images.Tutorial+1/6_2D002D002D00_Mapa_2D00_Final.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;De reparar, na imagem acima, que do &amp;quot;Screen 1&amp;quot; para o ecr&amp;atilde; &amp;quot;Falha&amp;quot; temos uma seta para a frente e outra para tr&amp;aacute;s. Isto porque no caso de existir um erro na introdu&amp;ccedil;&amp;atilde;o das credenciais queremos dar a possibilidade ao utilizador de voltar a tentar como podemos ver no ecr&amp;atilde; em baixo. Para o caso de sucesso temos um ecr&amp;atilde; bastante semelhante ao apresentado em baixo mas sem nenhum bot&amp;atilde;o e com a cor verde.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.SketchFlow+Tutorial+Images.Tutorial+1/7_2D002D002D00_Red_2D00_Screen.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Agora j&amp;aacute; temos os ecr&amp;atilde;s. Mas ent&amp;atilde;o e como navegamos entre eles. Muito facilmente!!!...como podemos ver em baixo. Basta pressionar sobre o objecto com o bot&amp;atilde;o direito do rato e escolher o ecr&amp;atilde; para o qual pretendemos ir.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.SketchFlow+Tutorial+Images.Tutorial+1/8_2D002D002D00_Button_2D00_Action.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Agora j&amp;aacute; temos o nosso projecto terminado. Vamos test&amp;aacute;-lo. Para isso basta pressionar F5 para compilar e correr o mesmo utilizando o SketchFlow Player. Tal como podemos ver no ecr&amp;atilde; apresentado em baixo temos assim acesso a todos os ecr&amp;atilde;s que est&amp;atilde;o ligados ao ecr&amp;atilde; principal. &amp;Eacute; portanto muito f&amp;aacute;cil navegar entre os ecr&amp;atilde;s.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.SketchFlow+Tutorial+Images.Tutorial+1/9_2D002D002D00_SketchFlow_2D00_Player_2D00_Overv.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Por exemplo, ao navegar para o ecr&amp;atilde; &amp;quot;Falha&amp;quot;, tal como podemos ver em baixo, temos o ecr&amp;atilde; vermelho com o bot&amp;atilde;o que nos permite navegar outra vez para o inicio.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://gozoomin.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tbarbosa.SketchFlow+Tutorial+Images.Tutorial+1/10_2D002D002D00_Red_2D00_Screen_2D00_In_2D00_Player.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;O objectivo deste post est&amp;aacute; concluido. De referir que o SketchFlow &amp;eacute; uma ferramenta com muitas capacidades e n&amp;atilde;o abord&amp;aacute;mos quase nenhuma neste post. Ficam para os pr&amp;oacute;ximos tutoriais. ;)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Stay tuned!!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gozoomin.com/aggbug.aspx?PostID=61979" width="1" height="1"&gt;</content><author><name>Tiago Barbosa</name><uri>http://gozoomin.com/members/Tiago-Barbosa/default.aspx</uri></author><category term="wpf" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/wpf/default.aspx" /><category term="silverlight" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/silverlight/default.aspx" /><category term="Expression Blend" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/Expression+Blend/default.aspx" /><category term="SketchFlow" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/SketchFlow/default.aspx" /></entry><entry><title>Começar a trabalhar com Silverlight</title><link rel="alternate" type="text/html" href="/blogs/tbarbosa/archive/2009/09/27/come-231-ar-a-trabalhar-com-silverlight.aspx" /><id>/blogs/tbarbosa/archive/2009/09/27/come-231-ar-a-trabalhar-com-silverlight.aspx</id><published>2009-09-27T09:54:00Z</published><updated>2009-09-27T09:54:00Z</updated><content type="html">&lt;p&gt;Este fim de semana estive presente no Team Building dos Microsoft Student Partners 2010. Antes de mais queria dizer que adorei conhecer todos os meus novos colegas e amigos. Foram 3 dias muito bons.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Mas uma coisa que eu notei &amp;eacute; que grande parte da malta que l&amp;aacute; estava n&amp;atilde;o conhecia o Silverlight ou j&amp;aacute; tinha ouvido falar mas n&amp;atilde;o nunca tinha &amp;quot;brincado&amp;quot; com ele. Ora bem, como uma pessoa que j&amp;aacute; trabalha com o Silverlight h&amp;aacute; algum tempo achei que era minha obriga&amp;ccedil;&amp;atilde;o dar uma m&amp;atilde;ozinha a esta malta que bem merece.&lt;/p&gt;
&lt;p&gt;Antes de mais uma pequena introdu&amp;ccedil;&amp;atilde;o ao conceito que est&amp;aacute; por tr&amp;aacute;s da palavra Silverlight. O Silverlight &amp;eacute; uma framework de desenvolvimento para a web que integra num simples plugin caracter&amp;iacute;sticas multimedia, gr&amp;aacute;ficos, anima&amp;ccedil;&amp;otilde;es e essencialmente interactividade. Eu podia falar-vos das vers&amp;otilde;es anteriores do Silverlight e das suas caracter&amp;iacute;sticas mas penso que sendo este um post para iniciantes no Silverlight n&amp;atilde;o ter&amp;aacute; grande interesse. Por isso vou mostrar antes as caracter&amp;iacute;sticas que distinguem a &amp;uacute;ltima vers&amp;atilde;o desta mesma tecnologia...a vers&amp;atilde;o 3!!&lt;/p&gt;
&lt;p&gt;A vers&amp;atilde;o 3 do Silverlight saiu &amp;agrave; bem pouco tempo mas trouxe muitas novas funcionalidades em rela&amp;ccedil;&amp;atilde;o &amp;agrave;s vers&amp;otilde;es anteriores, tais como:&lt;/p&gt;
&lt;p&gt;- Smooth Streaming&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; O Smooth Streaming &amp;eacute; uma funcionalidade que eu acho fant&amp;aacute;stica. Esta caracter&amp;iacute;stica detecta dinamicamente e altera em tempo real a qualidade de video de um ficheiro multim&amp;eacute;dia basendo-se na largura de banda e nas condi&amp;ccedil;&amp;otilde;es do CPU. Isto faz com que seja poss&amp;iacute;vel ver um video do principio ao fim sem interrup&amp;ccedil;&amp;otilde;es sendo que apenas &amp;eacute; alterada a qualidade do video. Um ponto muito bom desta caracter&amp;iacute;stica &amp;eacute; que ela suporta HD.&lt;/p&gt;
&lt;p&gt;- SketchFlow&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; O&amp;nbsp;SketchFlow vem revolucionar a velocidade e efic&amp;aacute;cia da constru&amp;ccedil;&amp;atilde;o de uma aplica&amp;ccedil;&amp;atilde;o Silverlight. O SketchFlow fornece-nos m&amp;eacute;todos informais para representar e prototipar &amp;quot;user interfaces&amp;quot; de forma bastante r&amp;aacute;pida e simples tornando mais f&amp;aacute;cil evoluir o conceito inicial da aplica&amp;ccedil;&amp;atilde;o para uma aplica&amp;ccedil;&amp;atilde;o final que os clientes adorem.&lt;/p&gt;
&lt;p&gt;- Out of Browser&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; O Silverlight agora permite que uma aplica&amp;ccedil;&amp;atilde;o Silverlight criada para correr no browser funcione fora do mesmo. Assim, qualquer aplica&amp;ccedil;&amp;atilde;o Silverlight pode correr quase como uma aplica&amp;ccedil;&amp;atilde;o WPF.&lt;/p&gt;
&lt;p&gt;- Pixel Shader Effects&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; Este conceito &amp;eacute; muito interessante principalmente para as pessoas que trabalhem com multim&amp;eacute;dia. Os Pixel Shader Effects permitem-nos de uma forma bastante b&amp;aacute;sica alterar o conte&amp;uacute;do gr&amp;aacute;fico, aplicar efeitos, etc em tempo real de ficheiros multim&amp;eacute;dia, sejam estes imagens ou v&amp;iacute;deos.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Agora que j&amp;aacute; sabem o que o Silverlight 3 tem para oferecer &amp;eacute; importante saberem os passos para instalar todas as aplica&amp;ccedil;&amp;otilde;es e ferramentas necess&amp;aacute;rias para iniciar o desenvolvimento em Silverlight. Ora bem, para isso s&amp;atilde;o necess&amp;aacute;rios 5 pequenos passos sendo que alguns s&amp;atilde;o opcionais mas eu aconselho na mesma.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;1 - Instalar as ferramentas de desenvolvimento&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;2 - Instalar o Microsoft Expression Blend 3 + SketchFlow&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;3 - Instalar o DeepZoom Composer&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;4 - Fazer download do Silverlight Toolkit&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;5 - Fazer download dos servi&amp;ccedil;os .NET RIA&lt;/p&gt;
&lt;p&gt;Para fazer o download e instala&amp;ccedil;&amp;atilde;o de todas estas ferramentas s&amp;oacute; tem que seguir o link&amp;nbsp;&lt;a title="http://silverlight.net/getstarted/" href="http://silverlight.net/getstarted/"&gt;http://silverlight.net/getstarted/&lt;/a&gt;. A ordem dos passos deve ser respeitada de modo a que a instala&amp;ccedil;&amp;atilde;o corra sem problemas.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Agora que j&amp;aacute; t&amp;ecirc;m os conceitos b&amp;aacute;sicos e j&amp;aacute; sabem o que &amp;eacute; o Silverlight resta-me deixar-vos alguns alguns links para resources e tutoriais...&lt;/p&gt;
&lt;p&gt;1 -&amp;nbsp;&lt;a href="http://silverlight.net/"&gt;http://silverlight.net/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Esta &amp;eacute; a p&amp;aacute;gina oficial do Silverlight. Aqui podem encontrar tudo, desde tutoriais,&amp;nbsp;v&amp;iacute;deos, downloads aplica&amp;ccedil;&amp;otilde;es criadas por outras pessoas e ainda a comunidade Silverlight. Caso decidam come&amp;ccedil;ar a &amp;quot;brincar&amp;quot; com o Silverlight aconselho vivamente a entrarem na comunidade. O forum &amp;eacute; muito bom para quem est&amp;aacute; a come&amp;ccedil;ar e n&amp;atilde;o s&amp;oacute;. &amp;Eacute; um &amp;oacute;ptimo s&amp;iacute;tio para verem as vossas quest&amp;otilde;es respondidas num curto espa&amp;ccedil;o de tempo.&lt;/p&gt;
&lt;p&gt;2 -&amp;nbsp;&lt;a href="http://silversprite.codeplex.com/"&gt;http://silversprite.codeplex.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Para os interessados em jogos como eu. :) Esta componente permite-nos correr jogos XNA em Silverlight de uma maneira ridiculamente f&amp;aacute;cil!!&lt;/p&gt;
&lt;p&gt;3 -&amp;nbsp;&lt;a title="http://connect.microsoft.com/silverlightmapcontrolctp" href="http://connect.microsoft.com/silverlightmapcontrolctp"&gt;http://connect.microsoft.com/silverlightmapcontrolctp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Este link guia-vos ao portal connect onde a Microsoft tem v&amp;aacute;rias ferramentas em desenvolvimento e onde &amp;eacute; poss&amp;iacute;vel ter acesso &amp;agrave;s mesmas. Neste caso o link &amp;eacute; para o componente do Virtual Earth para Silverlight. Sim, &amp;eacute; verdade podemos utilizar o Virtual Earth na nossa aplica&amp;ccedil;&amp;atilde;o Silverlight. Experimentem, &amp;eacute; muito interessante.&lt;/p&gt;
&lt;p&gt;4 -&amp;nbsp;&lt;a href="http://thelighteffect.wordpress.com/"&gt;http://thelighteffect.wordpress.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;O blog do nosso amigo Nuno Martins. Este blog come&amp;ccedil;ou &amp;agrave; pouco tempo mas gostei muito da maneira como come&amp;ccedil;ou, com tutoriais de qualidade. Participem e comentem, conhecendo o Nuno como conhe&amp;ccedil;o ele se voc&amp;ecirc;s comentarem e fizerem sugest&amp;otilde;es ele come&amp;ccedil;a a meter mais tutoriais. E a vantagem disto &amp;eacute; que ele trabalha na &amp;aacute;rea.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Podia estar aqui a colocar uma lista intermin&amp;aacute;vel de recursos mas acho que para come&amp;ccedil;ar este chegam, especialmente o primeiro que tem tudo...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gozoomin.com/aggbug.aspx?PostID=60536" width="1" height="1"&gt;</content><author><name>Tiago Barbosa</name><uri>http://gozoomin.com/members/Tiago-Barbosa/default.aspx</uri></author><category term="silverlight" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/silverlight/default.aspx" /><category term="MSP" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/MSP/default.aspx" /><category term="tutoriais" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/tutoriais/default.aspx" /><category term="jogos" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/jogos/default.aspx" /><category term="virtual earth" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/virtual+earth/default.aspx" /><category term="blogs" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/blogs/default.aspx" /></entry><entry><title>Primeiro Post</title><link rel="alternate" type="text/html" href="/blogs/tbarbosa/archive/2009/09/27/primeiro-post.aspx" /><id>/blogs/tbarbosa/archive/2009/09/27/primeiro-post.aspx</id><published>2009-09-27T09:27:00Z</published><updated>2009-09-27T09:27:00Z</updated><content type="html">&lt;p&gt;Boas a todos!&lt;/p&gt;
&lt;p&gt;Como em qualquer blog h&amp;aacute; sempre um primeiro post que &amp;eacute; um g&amp;eacute;nero de introdu&amp;ccedil;&amp;atilde;o ao mesmo. Pois bem, este n&amp;atilde;o &amp;eacute; excep&amp;ccedil;&amp;atilde;o...&lt;/p&gt;
&lt;p&gt;Neste blog eu vou tentar abordar algumas tecnologias da Microsoft tais como Silverlight, WPF, XNA entre outras. Vou falar tamb&amp;eacute;m de not&amp;iacute;cias sobre tecnologia, trabalhos realizados por mim, etc... Vou criar alguns tutoriais de tempos a tempos mas estes ser&amp;atilde;o essencialmente para Silverlight pois &amp;eacute; a minha tecnologia Microsoft de elei&amp;ccedil;&amp;atilde;o. :)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;N&amp;atilde;o ser&amp;aacute; preciso dizer que estou aberto a sugest&amp;otilde;es para tutoriais e posts. Cometem o que eu colocar neste blog porque o vosso feedback &amp;eacute; muito importante para saber se estou a ir no bom caminho!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gozoomin.com/aggbug.aspx?PostID=60525" width="1" height="1"&gt;</content><author><name>Tiago Barbosa</name><uri>http://gozoomin.com/members/Tiago-Barbosa/default.aspx</uri></author><category term="wpf" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/wpf/default.aspx" /><category term="xna" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/xna/default.aspx" /><category term="silverlight" scheme="http://gozoomin.com/blogs/tbarbosa/archive/tags/silverlight/default.aspx" /></entry></feed>