<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Marcio Althmann &#187; Silverlight</title>
	<atom:link href="http://www.marcioalthmann.net/tag/silverlight/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.marcioalthmann.net</link>
	<description></description>
	<lastBuildDate>Tue, 24 Jan 2012 15:12:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Conjectura de Collatz</title>
		<link>http://www.marcioalthmann.net/2011/06/conjectura-de-collatz/</link>
		<comments>http://www.marcioalthmann.net/2011/06/conjectura-de-collatz/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 02:14:55 +0000</pubDate>
		<dc:creator>Márcio Fábio Althmann</dc:creator>
				<category><![CDATA[.NET Framework]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[collatz conjecture]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.marcioalthmann.net/?p=619</guid>
		<description><![CDATA[Antes de começar o post, uma novidade é que tentarei postar tudo a partir de hoje em C#, Ruby e Python, assim consigo estudar mais Ruby e Python, e quem tem interesse pode aprender algo também, e por favor aceito críticas e dicas sobre os códigos! Também vou começar a resolver os problemas do Projeto...<p><a href="http://www.marcioalthmann.net/2011/06/conjectura-de-collatz/"> Leia mais →</a>]]></description>
			<content:encoded><![CDATA[<p>Antes de começar o post, uma novidade é que tentarei postar tudo a partir de hoje em C#, Ruby e Python, assim consigo estudar mais Ruby e Python, e quem tem interesse pode aprender algo também, e por favor aceito críticas e dicas sobre os códigos! Também vou começar a resolver os problemas do <a href="http://projecteuler.net/index.php?section=problems" target="_blank">Projeto Euler</a>, nas 3 linguagens então acho que todo mundo pode aprender um pouco!</p>
<p>Ano passado eu fiz alguns testes, utilizando alguns gráficos em Silverlight, e utilizei a Conjectura de Collatz para a geração dos gráficos, segue a definição da conjectura de Collatz que está na Wikipedia.<br />
<div class="info_box"><br />
A conjectura de Collatz é devida ao matemático alemão Lothar Collatz. A conjectura estabelece uma seqüência de números, ou trajetória, que a partir de um número natural inicial obedece aos seguintes critérios: se o número for par seu sucessor na seqüência será sua metade e se o número for ímpar seu sucessor será uma unidade superior ao seu triplo. Desta forma, por exemplo, se a seqüência iniciar com o número 5 ter-se-á: 5; 16; 8; 4; 2; 1. Interrompendo o procedimento no número 1 a pergunta que se faz é: qualquer que seja o número natural inicial a seqüência findará em 1?<br />
A conjectura de Collatz também é chamada de problema 3n + 1.<br />
</div></p>
<p>Eu realmente achei interessante, no final do post terá um gráfico em Silverlight onde poderá informar um número e ver que sempre chegará a 1 mesmo, independente do número informado. Fiz o código o mais simples possível, até porque o problema é simples de resolver, segue os códigos em C#, Python e Ruby.</p>
<div class="tabs_container"><ul class="tabs"><li><a href="#">C#</a></li><li><a href="#">Python</a></li><li><a href="#">Ruby</a></li></ul><div class="panes"><div class="pane"></p>
<pre class="brush: csharp;">class Program
{
    static void Main(string[] args)
    {
        Collatz(50);
        Console.Read();
    }

    static void Collatz(int numero)
    {
        Console.WriteLine(numero);

        if(numero == 1)
            return;

        if(numero % 2 == 0)
            Collatz(numero / 2);
        else
            Collatz(3 * numero + 1);
    }
}</pre>
<p></div><div class="pane"></p>
<pre class="brush: python;">def collatz(numero):
    print(numero)
    if numero == 1:
        return
    if numero % 2 == 0:
        collatz(numero / 2)
    else:
        collatz(3 * numero + 1)

collatz(50)</pre>
<p></div><div class="pane"></p>
<pre class="brush: ruby;">def collatz(numero)
  puts numero

  if numero == 1
    return
  end

  if numero % 2 == 0
    collatz(numero / 2)
  else
    collatz(3 * numero + 1)
  end
end

collatz(50)</pre>
<p></div></div></div>
<p>Já que disse anteriormente, o algoritmo é simples, em todas as linguages utilizei um método recursivo, e mesmo sem experiência em Ruby ou Python da para entender o que o código faz, então não explicarei detalhes do código, mas confesso que Python tem me agradado muito!</p>
<p>Agora para quem quiser testar a Conjectura de Collatz, abaixo tem o gráfico em Silverlight, só escolher um número e clicar no botão Collatz, o número 50 fica legal, não geram muitos resultados e fica legal analisar o gráfico, já que o mesmo é pequeno!</p>
<p><object width="500" height="300" data="data:application/x-silverlight-2," type="application/x-silverlight-2"><param name="source" value="/CollatzSilverlight.xap" /><param name="background" value="white" /><param name="minRuntimeVersion" value="3.0.40723.0" /><param name="autoupgrade" value="true" /><param name="enableHtmlAccess" value="true" /><a style="text-decoration: none;" href="http://go.microsoft.com/fwlink/?LinkID=149156"><img style="border-style: none; width: 400px; height: 200px;" src="http://storage.timheuer.com/sl4wp-ph.png" alt="Install Microsoft Silverlight" /></a></object></p>
<p>O código fonte do projeto está no <a href="https://github.com/marcioalthmann/Artigos/tree/master/CollatzConjecture" target="_blank">GitHub</a>.</p>
<p>Abraços e até o próximo artigo.</p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.marcioalthmann.net/2011/06/conjectura-de-collatz/&amp;layout=button_count&amp;show_faces=false&amp;width=300&amp;action=like&amp;font=&amp;colorscheme=light&amp;locale=en_US" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:300px; height:20px"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://www.marcioalthmann.net/2011/06/conjectura-de-collatz/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Easing Animations</title>
		<link>http://www.marcioalthmann.net/2011/03/easing-animations/</link>
		<comments>http://www.marcioalthmann.net/2011/03/easing-animations/#comments</comments>
		<pubDate>Wed, 16 Mar 2011 02:58:17 +0000</pubDate>
		<dc:creator>Márcio Fábio Althmann</dc:creator>
				<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://www.marcioalthmann.net/2011/03/easing-animations/</guid>
		<description><![CDATA[Quando estamos desenvolvendo aplicações ricas, jogos ou mesmo um site, a maioria das vezes utilizamos algum tipo de animação, para mostrar uma mensagem, esconder um botão ou mover um item para o carrinho de compra, no Silverlight possímos alguns &#8220;efeitos” prontos, que podemos adicionar em uma animação, são as Easing Animations. Para quem nunca fez...<p><a href="http://www.marcioalthmann.net/2011/03/easing-animations/"> Leia mais →</a>]]></description>
			<content:encoded><![CDATA[<p>Quando estamos desenvolvendo aplicações ricas, jogos ou mesmo um site, a maioria das vezes utilizamos algum tipo de animação, para mostrar uma mensagem, esconder um botão ou mover um item para o carrinho de compra, no Silverlight possímos alguns &#8220;efeitos” prontos, que podemos adicionar em uma animação, são as Easing Animations.</p>
<p>Para quem nunca fez alguma animação no Silverlight, vou mostrar como funciona, quando falamos de animação, devemos ter em mente que vamos trabalhar com Storyboards, ou seja o nosso objeto, vai mudar de alguma forma durante a execução da Storyboard, quem trabalha com Flash é só pensar na Timeline do Flash, claro que com algumas diferenças <img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://www.marcioalthmann.net/wp-content/uploads/2011/03/wlEmoticon-smile1.png" alt="Smile" />.</p>
<p>Então vamos começar com uma animação simples, eu quero clicar em um botão, e fazer uma bola cair. Veja abaixo como ficará a tela do nosso “jogo”. A tela é simples só possui uma “bola” e um Button, vamos utilizar o botão para iniciar a animação para ver que podemos controlar uma Storyboard pelo C#.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2011/03/Easing01.png" rel="lightbox[438]" title="Easing01"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border-width: 0px;" title="Easing01" src="http://www.marcioalthmann.net/wp-content/uploads/2011/03/Easing01_thumb.png" border="0" alt="Easing01" width="402" height="302" /></a></p>
<p>No Expression Blend existe uma janela chamada Objects And Timeline, onde podemos ver toda estrutura de objetos do arquivo que estamos trabalhando, e também as Storyboars, é na tela abaixo no botão “+” que clicamos para adicionar uma nova Storyboard. Um detalhe, toda essa parte visual de animação só está disponível no Expression Blend, é possível fazer tudo isso no Visual Studio, mas trabalhando diretamente com XAML.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2011/03/Easing02.png" rel="lightbox[438]" title="Easing02"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border-width: 0px;" title="Easing02" src="http://www.marcioalthmann.net/wp-content/uploads/2011/03/Easing02_thumb.png" border="0" alt="Easing02" width="279" height="178" /></a></p>
<p>Ao clicar para adicionar uma nova Storyboard, uma janela será mostrada, nela vamos informar o nome da nossa Storyboard, nesse caso vamos colocar “AnimacaoBola”.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2011/03/Easing03.png" rel="lightbox[438]" title="Easing03"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border-width: 0px;" title="Easing03" src="http://www.marcioalthmann.net/wp-content/uploads/2011/03/Easing03_thumb.png" border="0" alt="Easing03" width="388" height="151" /></a></p>
<p>Quando estamos trabalhando com alguma Storyboard, o Blend grava tudo que fazemos, ele mostra que está nesse modo de gravação pela borda vermelha e um icone vermelho indicando que a gravação está ativa, veja na imagem abaixo que agora a janela de Objects And Timeline já mostra também a Timeline onde vamos marcar os pontos de interesse na nossa animação.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2011/03/Easing04.png" rel="lightbox[438]" title="Easing04"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border-width: 0px;" title="Easing04" src="http://www.marcioalthmann.net/wp-content/uploads/2011/03/Easing04_thumb.png" border="0" alt="Easing04" width="640" height="370" /></a></p>
<p>Agora vamos começar a animação, o primeiro passo é selecionar o objeto que deseja animar, no caso do exemplo a bola, feito isso devemos marcar o ponto 0 na timeline, quando fazemos isso estamos falando que no segundo 0 da animação a bola estará naquela posição. marcamos um ponto clicando no botão Record Key Frame, quando fazemos isso uma imagem é adicionada no segundo selecionado, na linha do objeto que estamos trabalhando.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2011/03/Easing05.png" rel="lightbox[438]" title="Easing05"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="Easing05" src="http://www.marcioalthmann.net/wp-content/uploads/2011/03/Easing05_thumb.png" border="0" alt="Easing05" width="640" height="430" /></a></p>
<p>O próximo passo é mover a barra amarela para 1 segundo, e arrastar a bola para baixo, automaticamente um novo Key Frame será gerado, o Blend vai criar uma linha pontilhada para ajudar na visualização da movimentação do objeto enquanto trabalhamos.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2011/03/Easing06.png" rel="lightbox[438]" title="Easing06"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="Easing06" src="http://www.marcioalthmann.net/wp-content/uploads/2011/03/Easing06_thumb.png" border="0" alt="Easing06" width="640" height="426" /></a></p>
<p>Muito bem, nossa animação está quase pronta, já falamos que no segundo 0 a bola está em uma posição, no segundo 1 está em outra, o Blend já vai fazer o trabalho de mover o objeto de uma posição para outra, agora só falta no Click do botão falar para a animação começar, segue o código. Ahh outro detalhe, já que paramos de animar, lembrar de clicar no circulo vermelho que indica que o Blend está gravando, ou qualquer alteração na tela será gravada e vai participar da nossa animação <img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://www.marcioalthmann.net/wp-content/uploads/2011/03/wlEmoticon-smile1.png" alt="Smile" />.</p>
<pre class="brush: csharp;">private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
    AnimacaoBola.Begin();
}</pre>
<p>O resultado até agora está abaixo, só clicar no botão Iniciar Animação.</p>
<p><div id="silverlightControlHost"><object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="400" height="300"><param name="source" value="/Exemplo01.xap"/><param name="background" value="white" /><param name="minRuntimeVersion" value="3.0.40723.0" /><param name="autoupgrade" value="true" /><param name="enableHtmlAccess" value="true" /><a href="http://go.microsoft.com/fwlink/?LinkID=149156" style="text-decoration: none;"><img src="http://storage.timheuer.com/sl4wp-ph.png" alt="Install Microsoft Silverlight" style="border-style: none; width:400px; height:200px"/></a></object><iframe style="visibility:hidden;height:0;width:0;border:0px" id="_sl_historyFrame"></iframe></div><br /></p>
<p>Muito bem, agora vamos aprimorar nossa animação, eu quero que a bola se comporte da mesma forma que uma bola de verdade, ou seja não vai cair e parar, vai cair, subir um pouco, cair novamente, ou seja vai “pingar” até parar, fazer isso pela timeline é horrível, tem que ficar criando Key Frames, e arrastando o objeto, enfim poderia ser mais fácil, e no Silverlight é, podemos utilizar alguma Easing Animation <img class="wlEmoticon wlEmoticon-openmouthedsmile" style="border-style: none;" src="http://www.marcioalthmann.net/wp-content/uploads/2011/03/wlEmoticon-openmouthedsmile1.png" alt="Open-mouthed smile" />.</p>
<p>Quando animamos algum objeto, podemos ver na janela de Objects and Timeline que agora ele possui objetos filhos, nesse caso um RenderTransform, devemos clicar nesse item para ter acesso a janela de Easing Animations.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2011/03/Easing07.png" rel="lightbox[438]" title="Easing07"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border-width: 0px;" title="Easing07" src="http://www.marcioalthmann.net/wp-content/uploads/2011/03/Easing07_thumb.png" border="0" alt="Easing07" width="272" height="212" /></a></p>
<p>Abaixo é a janela com as funções de animação, lembrando que só temos acesso clicando nos objetos da animação, ou via XAML fazendo tudo na mão <img class="wlEmoticon wlEmoticon-openmouthedsmile" style="border-style: none;" src="http://www.marcioalthmann.net/wp-content/uploads/2011/03/wlEmoticon-openmouthedsmile1.png" alt="Open-mouthed smile" />.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2011/03/Easing08.png" rel="lightbox[438]" title="Easing08"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border-width: 0px;" title="Easing08" src="http://www.marcioalthmann.net/wp-content/uploads/2011/03/Easing08_thumb.png" border="0" alt="Easing08" width="240" height="104" /></a></p>
<p>Vamos trabalhar com EasingFunction que já vem selecionado, KeySpline e Hold In fica para um próximo artigo. Explicando de uma forma simples as Easing Functions são funções matemáticas, que trabalham diretamente com o objeto da animação, algumas Easing Functions tem propriedades para modificarmos por exemplo, Amplitude, Bounces, Oscillations. Mas todas vem com valores default então vamos utilizar sempre com o default nesse artigo.</p>
<p>Alista de Funções é grande, veja abaixo as funções disponíveis, a imagem ajuda a pré-visualizar o comportamento do objeto para cada função, e pela imagem abaixo já da para ver que a função é a Bounce do tipo Out.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2011/03/Easing09.png" rel="lightbox[438]" title="Easing09"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border-width: 0px;" title="Easing09" src="http://www.marcioalthmann.net/wp-content/uploads/2011/03/Easing09_thumb.png" border="0" alt="Easing09" width="262" height="483" /></a></p>
<p>Para ver o resultado da animação com a Easing Function Bounce aplicada, clique no Inicar Animação abaixo.</p>
<p><object width="400" height="300" type="application/x-silverlight-2" data="data:application/x-silverlight-2,"><param name="source" value="/Exemplo02.xap" /><param name="background" value="white" /><param name="minRuntimeVersion" value="3.0.40723.0" /><param name="autoupgrade" value="true" /><param name="enableHtmlAccess" value="true" /><a style="text-decoration: none;" href="http://go.microsoft.com/fwlink/?LinkID=149156"><img style="border-style: none; width: 400px; height: 200px;" src="http://storage.timheuer.com/sl4wp-ph.png" alt="Install Microsoft Silverlight" /></a></object></p>
<p>Existem muitas funções, com muitas variações, principalmente modificando as propriedades que falei anteriormente, por isso fiz o exemplo abaixo para que você consiga testar aqui os tipos de funções e o resultado das funções aplicadas no objeto.</p>
<p><object width="400" height="300" type="application/x-silverlight-2" data="data:application/x-silverlight-2,"><param name="source" value="/EasingAnimations.xap" /><param name="background" value="white" /><param name="minRuntimeVersion" value="3.0.40723.0" /><param name="autoupgrade" value="true" /><param name="enableHtmlAccess" value="true" /><a style="text-decoration: none;" href="http://go.microsoft.com/fwlink/?LinkID=149156"><img style="border-style: none; width: 400px; height: 200px;" src="http://storage.timheuer.com/sl4wp-ph.png" alt="Install Microsoft Silverlight" /></a></object></p>
<p>Segue o código completo do exemplo, nele aplico o tipo de animação pelo C#.</p>
<pre class="brush: xml;">&lt;UserControl
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"
    x:Class="EasingAnimations.MainPage"
    Width="400" Height="300"&gt;
    &lt;UserControl.Resources&gt;
        &lt;Storyboard x:Name="Animacao"&gt;
            &lt;DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="ellipse"&gt;
                &lt;EasingDoubleKeyFrame KeyTime="0" Value="0"/&gt;
                &lt;EasingDoubleKeyFrame KeyTime="0:0:1" Value="197" x:Name="Funcao"/&gt;
            &lt;/DoubleAnimationUsingKeyFrames&gt;
        &lt;/Storyboard&gt;
    &lt;/UserControl.Resources&gt;

    &lt;Canvas x:Name="LayoutRoot" Background="#FFF3F3F3" d:LayoutOverrides="HorizontalAlignment"&gt;
        &lt;Ellipse x:Name="ellipse" Height="47" Width="47" Fill="#FF45454E" RenderTransformOrigin="0.5,0.5" Canvas.Left="56" Canvas.Top="10"&gt;
            &lt;Ellipse.RenderTransform&gt;
                &lt;CompositeTransform/&gt;
            &lt;/Ellipse.RenderTransform&gt;
        &lt;/Ellipse&gt;
        &lt;Button Content="Iniciar Animação" Width="143" Click="Button_Click" Canvas.Left="204" Canvas.Top="174"/&gt;
        &lt;TextBlock TextWrapping="Wrap" Text="Easing Mode" Canvas.Left="204" Canvas.Top="81"/&gt;
        &lt;ComboBox x:Name="ModoDaAnimacao" Width="143" Canvas.Left="204" Canvas.Top="97" ItemsSource="{Binding}" SelectedValuePath="Nome" DisplayMemberPath="Nome"&gt;
        &lt;/ComboBox&gt;
        &lt;TextBlock TextWrapping="Wrap" Text="Easing Function" Canvas.Left="204" Canvas.Top="119"/&gt;
        &lt;ComboBox x:Name="FuncaoDaAnimacao" Width="143" Canvas.Left="204" Canvas.Top="135" ItemsSource="{Binding}" SelectedValuePath="Nome" DisplayMemberPath="Nome"&gt;
        &lt;/ComboBox&gt;
    &lt;/Canvas&gt;
&lt;/UserControl&gt;</pre>
<p>O código em C#.</p>
<pre class="brush: csharp;">using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace EasingAnimations
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            // Required to initialize variables
            InitializeComponent();
            Loaded += (obj, args) =&gt;
                          {
                              ModoDaAnimacao.ItemsSource = new ModoDeAnimacao().ObterModosDeAnimacao();
                              ModoDaAnimacao.SelectedIndex = 0;
                              FuncaoDaAnimacao.ItemsSource = new FuncaoDeAnimacao().ObterFuncoesDeAnimacao();
                              FuncaoDaAnimacao.SelectedIndex = 0;
                          };
        }

        private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            var funcaoDaAnimacao = ObterFuncaoDaAnimacao();
            Funcao.EasingFunction = funcaoDaAnimacao;
            Animacao.Begin();
        }

        private EasingMode ObterModoDaAnimacao()
        {
            var modoDaAnimacao = new EasingMode();
            switch (ModoDaAnimacao.SelectedValue.ToString())
            {
                case "EaseIn":
                    modoDaAnimacao = EasingMode.EaseIn;
                    break;
                case "EaseOut":
                    modoDaAnimacao = EasingMode.EaseOut;
                    break;
                case "EaseInOut":
                    modoDaAnimacao = EasingMode.EaseInOut;
                    break;
            }

            return modoDaAnimacao;
        }

        private IEasingFunction ObterFuncaoDaAnimacao()
        {
            EasingFunctionBase funcaoDaAnimacao = null;

            switch (FuncaoDaAnimacao.SelectedValue.ToString())
            {
                case "BackEase":
                    funcaoDaAnimacao =  new BackEase();
                    break;
                case "BounceEase":
                    funcaoDaAnimacao = new BounceEase();
                    break;
                case "CircleEase":
                    funcaoDaAnimacao = new CircleEase();
                    break;
                case "CubicEase":
                    funcaoDaAnimacao = new CubicEase();
                    break;
                case "ElasticEase":
                    funcaoDaAnimacao = new ElasticEase();
                    break;
                case "ExponentialEase":
                    funcaoDaAnimacao = new ExponentialEase();
                    break;
                case "PowerEase":
                    funcaoDaAnimacao = new PowerEase();
                    break;
                case "QuadraticEase":
                    funcaoDaAnimacao = new QuadraticEase();
                    break;
                case "QuarticEase":
                    funcaoDaAnimacao = new QuarticEase();
                    break;
                case "QuinticEase":
                    funcaoDaAnimacao = new QuinticEase();
                    break;
                case "SineEase":
                    funcaoDaAnimacao = new SineEase();
                    break;
            }

            funcaoDaAnimacao.EasingMode = ObterModoDaAnimacao();
            return funcaoDaAnimacao;
        }
    }

    public class ModoDeAnimacao
    {
        public string Nome { get; set; }

        public IList&lt;ModoDeAnimacao&gt; ObterModosDeAnimacao()
        {
            return new List&lt;ModoDeAnimacao&gt;
                       {
                           new ModoDeAnimacao {Nome = "EaseIn"},
                           new ModoDeAnimacao {Nome = "EaseOut"},
                           new ModoDeAnimacao {Nome = "EaseInOut"},
                       };
        }
    }

    public class FuncaoDeAnimacao
    {
        public string Nome { get; set; }

        public IList&lt;FuncaoDeAnimacao&gt; ObterFuncoesDeAnimacao()
        {
            return new List&lt;FuncaoDeAnimacao&gt;
                       {
                           new FuncaoDeAnimacao{Nome = "BackEase"},
                           new FuncaoDeAnimacao{Nome = "BounceEase"},
                           new FuncaoDeAnimacao{Nome = "CircleEase"},
                           new FuncaoDeAnimacao{Nome = "CubicEase"},
                           new FuncaoDeAnimacao{Nome = "ElasticEase"},
                           new FuncaoDeAnimacao{Nome = "ExponentialEase"},
                           new FuncaoDeAnimacao{Nome = "PowerEase"},
                           new FuncaoDeAnimacao{Nome = "QuadraticEase"},
                           new FuncaoDeAnimacao{Nome = "QuinticEase"},
                           new FuncaoDeAnimacao{Nome = "SineEase"}
                       };
        }
    }
}</pre>
<p>É complicado mostrar animações em artigos, o ideal seria vídeos, mas enquanto não gravo espero que o artigo seja útil, principalmente para quem nunca fez animações com Silverlight.</p>
<p>Se quiser contribuir ou baixar o código fonte do projeto, é só clicar no link abaixo.</p>
<p><a href="https://github.com/marcioalthmann/Artigos/tree/master/EasingAnimations/EasingAnimations" target="_blank">Código fonte do projeto.</a></p>
<p>Abraços.</p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.marcioalthmann.net/2011/03/easing-animations/&amp;layout=button_count&amp;show_faces=false&amp;width=300&amp;action=like&amp;font=&amp;colorscheme=light&amp;locale=en_US" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:300px; height:20px"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://www.marcioalthmann.net/2011/03/easing-animations/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Realidade Aumentada</title>
		<link>http://www.marcioalthmann.net/2011/03/realidade-aumentada/</link>
		<comments>http://www.marcioalthmann.net/2011/03/realidade-aumentada/#comments</comments>
		<pubDate>Tue, 08 Mar 2011 21:46:33 +0000</pubDate>
		<dc:creator>Márcio Fábio Althmann</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[realidade aumentada]]></category>

		<guid isPermaLink="false">http://www.marcioalthmann.net/2011/03/realidade-aumentada/</guid>
		<description><![CDATA[Olá pessoal, tudo bem? Hoje vou começar uma série de posts sobre realidade aumentada, claro que com foco em Silverlight, mas no primeiro post vamos ver o que é realidade aumentada e como podemos utiliza-la. A imagem acima é um bom exemplo de utilização de realidade aumentada, mas para entender melhor o assunto vamos ver...<p><a href="http://www.marcioalthmann.net/2011/03/realidade-aumentada/"> Leia mais →</a>]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal, tudo bem?</p>
<p>Hoje vou começar uma série de posts sobre realidade aumentada, claro que com foco em Silverlight, mas no primeiro post vamos ver o que é realidade aumentada e como podemos utiliza-la.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2011/03/RealidadeAumentada01.jpg" rel="lightbox[412]" title="RealidadeAumentada01"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="RealidadeAumentada01" border="0" alt="RealidadeAumentada01" src="http://www.marcioalthmann.net/wp-content/uploads/2011/03/RealidadeAumentada01_thumb.jpg" width="240" height="183" /></a></p>
<p>A imagem acima é um bom exemplo de utilização de realidade aumentada, mas para entender melhor o assunto vamos ver algumas definições sobre Realidade Aumentada definidas por Ronald Azuma.</p>
<ul>
<li>Combina elementos virtuais com o ambiente real </li>
<li>É interativa e tem processamento em tempo real </li>
<li>É concebida em três dimensões </li>
</ul>
<p>Interessante, mas o que podemos fazer com realidade aumentada? Nós podemos levar a interação com o usuário final a outro nível, quer um exemplo nacional? <a href="http://www.submarino.com.br/portal/galeria_motor_ra/?WT.mc_id=ra_banner_full" target="_blank">Veja essa parte do submarino onde podemos ver como ficaria em nossa casa algum quadro vendido pelo site</a>.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2011/03/arte2.gif" rel="lightbox[412]" title="arte2"><img style="display: inline" title="arte2" alt="arte2" src="http://www.marcioalthmann.net/wp-content/uploads/2011/03/arte2_thumb.gif" width="487" height="275" /></a></p>
<p>Existem vários exemplos disponíveis na internet, quer outro ótimo exemplo? Veja esse jogo utilizando realidade aumentada.</p>
<div style="padding-bottom: 0px; padding-left: 0px; width: 448px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:86d75b86-8a77-4b13-9f3b-5e415196985e" class="wlWriterEditableSmartContent">
<div><object width="448" height="252"><param name="movie" value="http://www.youtube.com/v/rB5xUStsUs4?hl=en&amp;hd=1"></param><embed src="http://www.youtube.com/v/rB5xUStsUs4?hl=en&amp;hd=1" type="application/x-shockwave-flash" width="448" height="252"></embed></object></div>
<div style="width:448px;clear:both;font-size:.8em">Realidade Aumentada com Iphone</div>
</div>
<p>&#160;</p>
<p>Independente da plataforma, utilizar Realidade Aumentada é incrível, que tal fazer um jogo do parecido com esse mostrado no IPhone mas no Windows Phone 7, utilizando Silverlight? Ou criar uma experiência diferente em seu e-commerce utilizando Silverlight da mesma forma que o Submarino fez?</p>
<p>Quando falamos em Realidade Aumentada no mundo do Silverlight, estamos falando do <a href="http://slartoolkit.codeplex.com/" target="_blank">SLARTookit</a> criado pelo MVP <a href="http://rene-schulte.info/" target="_blank">René Schulte</a>, e é com esse framework que vamos trabalhar nos próximos artigos.</p>
<p>Veja abaixo uma demostração utilizando o <a href="http://slartoolkit.codeplex.com" target="_blank">SLARToolkit</a>.</p>
<p>&#160;</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:e02d99a0-b3be-41dc-bcbb-28a83aefee38" class="wlWriterEditableSmartContent">
<div><object width="448" height="252"><param name="movie" value="http://www.youtube.com/v/NmDm-NI535g?hl=en&amp;hd=1"></param><embed src="http://www.youtube.com/v/NmDm-NI535g?hl=en&amp;hd=1" type="application/x-shockwave-flash" width="448" height="252"></embed></object></div>
<div style="width:448px;clear:both;font-size:.8em">Realidade Aumentada com Silverlight utilizando o SLARToolkit</div>
</div>
<p>&#160;</p>
<p>Nos próximos artigos vou detalhar todos os recursos do <a href="http://slartoolkit.codeplex.com" target="_blank">SLARToolkit</a> e vamos criar um exemplo legal de realidade aumentada, mas já vou fazer um convite a todos aqui.</p>
<p>O <a href="http://elemarjr.net/" target="_blank">Elemar Jr</a>. que está escrevendo sobre arquitetura no <a href="http://www.silverlightplanet.net.br" target="_blank">Silverlight Planet</a>, está criando uma <a href="http://elemarjr.net/2010/12/30/escrevendo-um-engine-para-xadrez-parte-1-bitboards/" target="_blank">engine de xadrez</a> em .NET, que tal criamos a UX do jogo utilizando realidade aumentada? O que acha Elemar, um projeto da comunidade para contribuir com sua engine? <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-openmouthedsmile" alt="Open-mouthed smile" src="http://www.marcioalthmann.net/wp-content/uploads/2011/03/wlEmoticon-openmouthedsmile.png" /></p>
<p>Por hoje é só pessoal, até o próximo artigo onde vamos avançar um pouco com Realidade Aumentada.</p>
<p>Abraços.</p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.marcioalthmann.net/2011/03/realidade-aumentada/&amp;layout=button_count&amp;show_faces=false&amp;width=300&amp;action=like&amp;font=&amp;colorscheme=light&amp;locale=en_US" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:300px; height:20px"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://www.marcioalthmann.net/2011/03/realidade-aumentada/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Controles free da Telerik</title>
		<link>http://www.marcioalthmann.net/2010/12/controles-free-da-telerik/</link>
		<comments>http://www.marcioalthmann.net/2010/12/controles-free-da-telerik/#comments</comments>
		<pubDate>Fri, 03 Dec 2010 23:10:41 +0000</pubDate>
		<dc:creator>Márcio Fábio Althmann</dc:creator>
				<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://www.marcioalthmann.net/2010/12/controles-free-da-telerik/</guid>
		<description><![CDATA[Olá tudo bem? Muita notícia boa nos últimos dias, e agora mais uma. A Telerik disponibilizou para download 3 controles de Silverlight de graça. Sempre utilizei controles da Telerik, são de ótima qualidade, então não da para perder essa chance, faça o download agora mesmo. Os controles são Book, Gauge e TileView. Veja abaixo uma...<p><a href="http://www.marcioalthmann.net/2010/12/controles-free-da-telerik/"> Leia mais →</a>]]></description>
			<content:encoded><![CDATA[<p>Olá tudo bem?</p>
<p>Muita notícia boa nos últimos dias, e agora mais uma. A <a href="http://www.telerik.com" target="_blank">Telerik</a> disponibilizou para download 3 controles de Silverlight de graça. Sempre utilizei controles da Telerik, são de ótima qualidade, então não da para perder essa chance, faça o <a href="http://www.telerik.com/products/free-silverlight-controls.aspx" target="_blank">download agora mesmo</a>.</p>
<p>Os controles são Book, Gauge e TileView.</p>
<p>Veja abaixo uma imagem de cada controle funcionando.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2010/12/Gauge.jpg" rel="lightbox[327]" title="Gauge"><img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Gauge" border="0" alt="Gauge" src="http://www.marcioalthmann.net/wp-content/uploads/2010/12/Gauge_thumb.jpg" width="240" height="150" /></a></p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2010/12/TelerikBook.jpg" rel="lightbox[327]" title="TelerikBook"><img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="TelerikBook" border="0" alt="TelerikBook" src="http://www.marcioalthmann.net/wp-content/uploads/2010/12/TelerikBook_thumb.jpg" width="240" height="149" /></a></p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2010/12/TileView.jpg" rel="lightbox[327]" title="TileView"><img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="TileView" border="0" alt="TileView" src="http://www.marcioalthmann.net/wp-content/uploads/2010/12/TileView_thumb.jpg" width="240" height="149" /></a></p>
<p>Abraços.</p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.marcioalthmann.net/2010/12/controles-free-da-telerik/&amp;layout=button_count&amp;show_faces=false&amp;width=300&amp;action=like&amp;font=&amp;colorscheme=light&amp;locale=en_US" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:300px; height:20px"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://www.marcioalthmann.net/2010/12/controles-free-da-telerik/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Silverlight Planet&#8211;Webcast de lan&#231;amento</title>
		<link>http://www.marcioalthmann.net/2010/11/silverlight-planetwebcast-de-lanamento/</link>
		<comments>http://www.marcioalthmann.net/2010/11/silverlight-planetwebcast-de-lanamento/#comments</comments>
		<pubDate>Fri, 12 Nov 2010 22:06:58 +0000</pubDate>
		<dc:creator>Márcio Fábio Althmann</dc:creator>
				<category><![CDATA[Novidades]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://www.marcioalthmann.net/2010/11/silverlight-planetwebcast-de-lanamento/</guid>
		<description><![CDATA[Olá, tudo bem? Hoje tivemos duas ótimas notícias para a nossa comunidade de Silverlight, a www.silverlightplanet.net.br uma é que está disponível para inscrição o webcast de lançamento da comunidade, pode se inscrever no link abaixo. https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032471167&#38;Culture=pt-BR A outra é incrível, mas segredo ainda \o/ Abraços.]]></description>
			<content:encoded><![CDATA[<p>Olá, tudo bem?</p>
<p>Hoje tivemos duas ótimas notícias para a nossa comunidade de Silverlight, a <a href="http://www.silverlightplanet.net.br">www.silverlightplanet.net.br</a> uma é que está disponível para inscrição o webcast de lançamento da comunidade, pode se inscrever no link abaixo.</p>
<p><a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032471167&amp;Culture=pt-BR">https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032471167&amp;Culture=pt-BR</a></p>
<p>A outra é incrível, mas segredo ainda \o/</p>
<p>Abraços.</p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.marcioalthmann.net/2010/11/silverlight-planetwebcast-de-lanamento/&amp;layout=button_count&amp;show_faces=false&amp;width=300&amp;action=like&amp;font=&amp;colorscheme=light&amp;locale=en_US" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:300px; height:20px"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://www.marcioalthmann.net/2010/11/silverlight-planetwebcast-de-lanamento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Silverlight &#8211; Margin</title>
		<link>http://www.marcioalthmann.net/2010/11/silverlight-margin/</link>
		<comments>http://www.marcioalthmann.net/2010/11/silverlight-margin/#comments</comments>
		<pubDate>Sun, 07 Nov 2010 21:46:41 +0000</pubDate>
		<dc:creator>Márcio Fábio Althmann</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[XAML]]></category>

		<guid isPermaLink="false">http://www.marcioalthmann.net/2010/11/silverlight-margin/</guid>
		<description><![CDATA[Olá, tudo bem? Depois de muito trabalho preparando a nova comunidade Silverlight Planet volto com o blog. No artigo onde mostrei como trabalhar com o Grid no Silverlight, lembrando que não é o DataGrid onde exibimos dados, mas sim o painel de layout Grid, falei que mostraria mais sobre a propriedade Margin dos controles. Na...<p><a href="http://www.marcioalthmann.net/2010/11/silverlight-margin/"> Leia mais →</a>]]></description>
			<content:encoded><![CDATA[<p>Olá, tudo bem?</p>
<p>Depois de muito trabalho preparando a nova comunidade <a href="http://www.silverlightplanet.net.br" target="_blank">Silverlight Planet</a> volto com o blog.</p>
<p>No artigo onde mostrei como trabalhar com o <a href="http://www.marcioalthmann.net/2010/10/xamlgrid/" target="_blank">Grid no Silverlight</a>, lembrando que não é o DataGrid onde exibimos dados, mas sim o painel de layout Grid, falei que mostraria mais sobre a propriedade Margin dos controles.</p>
<p>Na propriedade Margin definimos o espaçamento entre o controle, e o item “pai” dele, ou seja, onde esse controle está, por exemplo uma célula de um Grid.</p>
<p>Para demonstrar como podemos trabalhar com a margem dos controles, vamos utilizar o código abaixo.</p>
<p>&#160;</p>
<pre class="brush: xml;">&lt;Grid x:Name=&quot;LayoutRoot&quot; Background=&quot;White&quot;&gt;
    &lt;Grid.ColumnDefinitions&gt;
        &lt;ColumnDefinition&gt;&lt;/ColumnDefinition&gt;
    &lt;/Grid.ColumnDefinitions&gt;
    &lt;Grid.RowDefinitions&gt;
        &lt;RowDefinition&gt;&lt;/RowDefinition&gt;
    &lt;/Grid.RowDefinitions&gt;

    &lt;Button Content=&quot;www.silverlightplanet.net.br&quot;/&gt;
&lt;/Grid&gt;</pre>
<p>Da forma como o código está, o botão ocupa toda a área disponível, veja abaixo,, o que será ideal para mostrar as formas de trabalhar com as margens.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2010/11/Margin01.jpg" rel="lightbox[307]" title="Margin01"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Margin01" border="0" alt="Margin01" src="http://www.marcioalthmann.net/wp-content/uploads/2010/11/Margin01_thumb.jpg" width="240" height="212" /></a></p>
<p>A primeira forma é chamada de <em>uniforme</em>, onde informamos um valor para a propriedade <em>Margin</em> do <em>Button</em>, e o valor será atribuído para as quatro margens, que são<em> esquerda, superior, direita e inferior.</em></p>
<p>Então agora informamos que todas as margens do botão em relação a célula do grid, tem 10 pixels.</p>
<pre class="brush: xml;">&lt;Button Content=&quot;www.silverlightplanet.net.br&quot; Margin=&quot;10&quot;/&gt;</pre>
<p>E o resultado.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2010/11/Margin02.jpg" rel="lightbox[307]" title="Margin02"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Margin02" border="0" alt="Margin02" src="http://www.marcioalthmann.net/wp-content/uploads/2010/11/Margin02_thumb.jpg" width="240" height="239" /></a></p>
<p>Uma outra forma, é que podemos “agrupar” valores, por exemplo, gostaríamos que a margem esquerda e direita sejam igual a 10 pixels, e a superior e inferior igual a 20 pixels, então conseguimos informar dois valores somente <em>Margin=”esquerda+direita, superior+inferior”.</em></p>
<pre class="brush: xml;">&lt;Button Content=&quot;www.silverlightplanet.net.br&quot; Margin=&quot;10, 20&quot;/&gt;</pre>
<p><em></em></p>
<p>Resultado.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2010/11/Margin03.jpg" rel="lightbox[307]" title="Margin03"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Margin03" border="0" alt="Margin03" src="http://www.marcioalthmann.net/wp-content/uploads/2010/11/Margin03_thumb.jpg" width="240" height="228" /></a></p>
<p>E agora a última forma, onde podemos informar o valor para cada uma dar margens separadamente, da seguinte forma <em>Margin=”esquerda, superior, direita, inferior”, </em></p>
<pre class="brush: xml;">&lt;Button Content=&quot;www.silverlightplanet.net.br&quot; Margin=&quot;5, 10, 15, 20&quot;/&gt;</pre>
<p>Resultado.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2010/11/Margin04.jpg" rel="lightbox[307]" title="Margin04"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Margin04" border="0" alt="Margin04" src="http://www.marcioalthmann.net/wp-content/uploads/2010/11/Margin04_thumb.jpg" width="240" height="233" /></a></p>
<p>Exemplos simples, mas que precisamos saber para definir corretamente as elementos dos nossos layouts.</p>
<p>Abraços e até o próximo artigo.</p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.marcioalthmann.net/2010/11/silverlight-margin/&amp;layout=button_count&amp;show_faces=false&amp;width=300&amp;action=like&amp;font=&amp;colorscheme=light&amp;locale=en_US" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:300px; height:20px"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://www.marcioalthmann.net/2010/11/silverlight-margin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Silverlight Planet</title>
		<link>http://www.marcioalthmann.net/2010/11/silverlight-planet/</link>
		<comments>http://www.marcioalthmann.net/2010/11/silverlight-planet/#comments</comments>
		<pubDate>Fri, 05 Nov 2010 15:31:44 +0000</pubDate>
		<dc:creator>Márcio Fábio Althmann</dc:creator>
				<category><![CDATA[Novidades]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://www.marcioalthmann.net/2010/11/silverlight-planet/</guid>
		<description><![CDATA[Olá tudo bem? Quem tem acompanhado o Twitter, deve ter visto que estou trabalhando em uma comunidade de Silverlight com o Ricardo Dorta e a Gesilene Martins. Hoje lançamos oficialmente o endereço do site, a nossa logo, e o lançamento oficial da comunidade Silverlight Planet será no dia 28/11 as 15:00 com um Webcast, onde...<p><a href="http://www.marcioalthmann.net/2010/11/silverlight-planet/"> Leia mais →</a>]]></description>
			<content:encoded><![CDATA[<p>Olá tudo bem?</p>
<p>Quem tem acompanhado o Twitter, deve ter visto que estou trabalhando em uma comunidade de Silverlight com o <a href="http://blogs.makesys.com.br/Dorta/" target="_blank">Ricardo Dorta</a> e a <a href="http://www.gesilenemartins.net" target="_blank">Gesilene Martins</a>.</p>
<p>Hoje lançamos oficialmente o endereço do site, a nossa logo, e o lançamento oficial da comunidade Silverlight Planet será no dia 28/11 as 15:00 com um Webcast, onde vamos anunciar todos os planos, como todos podem contribuir para a comunidade, e muitas novidades.</p>
<p>O endereço da comunidade é <a href="http://www.silverlightplanet.net.br">http://www.silverlightplanet.net.br</a> todos estão convidados a participar, temos página no Facebook onde já podem se cadastrar, ainda temos muito trabalho, estão finalizando os últimos acertos e conteúdos para a comunidade começar a todo vapor.</p>
<p>Gostaria de agradecer aqui, mais uma vez, o Dorta e a Gesilene, pela ajuda e apoio na construção da comunidade, sem essa equipe o <a href="http://www.silverlightplanet.net.br" target="_blank">Silverlight Planet</a> não existiria, muito obrigado aos dois.</p>
<p>Por enquanto é só, e fiquem ligados nas novidades do <a href="http://www.silverlightplanet.net.br" target="_blank">Silverlight Planet.</a> Quem quiser seguir o Twitter oficial é <a href="http://twitter.com/slplanet" target="_blank">@slplanet</a>.</p>
<p>Abraços.</p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.marcioalthmann.net/2010/11/silverlight-planet/&amp;layout=button_count&amp;show_faces=false&amp;width=300&amp;action=like&amp;font=&amp;colorscheme=light&amp;locale=en_US" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:300px; height:20px"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://www.marcioalthmann.net/2010/11/silverlight-planet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O futuro do Silverlight</title>
		<link>http://www.marcioalthmann.net/2010/10/o-futuro-do-silverlight/</link>
		<comments>http://www.marcioalthmann.net/2010/10/o-futuro-do-silverlight/#comments</comments>
		<pubDate>Sat, 30 Oct 2010 14:12:24 +0000</pubDate>
		<dc:creator>Márcio Fábio Althmann</dc:creator>
				<category><![CDATA[Pensamentos]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://www.marcioalthmann.net/2010/10/o-futuro-do-silverlight/</guid>
		<description><![CDATA[Bom dia pessoal, tudo bem? É, o PDC acabou, e uma entrevista do Bob Muglia, disponível aqui, está gerando a maior discussão, então resolvi falar o que eu acho sobre o assunto aqui no blog. Bom resumindo a entrevista, ele fala que a Microsoft mudou a estratégia para o Silverlight, e que o Silverlight é...<p><a href="http://www.marcioalthmann.net/2010/10/o-futuro-do-silverlight/"> Leia mais →</a>]]></description>
			<content:encoded><![CDATA[<p>Bom dia pessoal, tudo bem?</p>
<p>É, o PDC acabou, e uma entrevista do Bob Muglia, <a href="http://www.zdnet.com/blog/microsoft/microsoft-our-strategy-with-silverlight-has-shifted/7834" target="_blank">disponível aqui</a>, está gerando a maior discussão, então resolvi falar o que eu acho sobre o assunto aqui no blog.</p>
<p>Bom resumindo a entrevista, ele fala que a Microsoft mudou a estratégia para o Silverlight, e que o Silverlight é para aplicações de negócios, vídeos, e sites é com HTML.</p>
<p>E alguém pode me falar qual a novidade disso?</p>
<p>Eu sempre achei estranho sites em Flash ou Silverlight, você ve carregando, ai a hora que o site abre, a maioria utilizou o Flash ou Silverlight só para fazer um menu deslizando ou algo assim, o problema não está na tecnologia mas na forma como ela é utilizada.</p>
<p>Agora quando caimos no mundo de aplicações de negócios, ou vídeos, o Silverlight da show, quem já testou Smooth Streaming sabe o que estou falando, o mesmo para aplicações, eu não uso Silverlight para sites, só para aplicações.</p>
<p>Agora vamos ao queridinho da vez, o HTML 5, se ele virar tudo que estão prometendo vai ser ótimo, perfeito, mas por enquanto são só promessas, e antes que digam um monte nos comentários vejam <a href="http://www.baboo.com.br/conteudo/modelos/W3C-HTML5-ainda-nao-esta-pronto_a40090_z0.aspx" target="_blank">isso aqui</a>, ainda tem muito que ser feito no HTML 5, mas vamos torcer para que esse dia não demore tanto.</p>
<p>Sem contar que ainda continuaremos com o seguine problema com o HTML 5 + CSS + JavaScript, cada browser vai abrir de um jeito, ou sou só eu que acho isso? Pode aparecer o HTML 5000, o IE vai fazer de um jeito, o Firefox de outro, o Chrome de outro, o Opera de outro, e vamos continar reclamando disso todos os dias. </p>
<p>Agora é hora de ter calma, e analisar bem as coisas, e principalmente onde estamos investindo a tecnologia x e y.</p>
<p>Abraços.</p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.marcioalthmann.net/2010/10/o-futuro-do-silverlight/&amp;layout=button_count&amp;show_faces=false&amp;width=300&amp;action=like&amp;font=&amp;colorscheme=light&amp;locale=en_US" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:300px; height:20px"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://www.marcioalthmann.net/2010/10/o-futuro-do-silverlight/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Fontes customizadas no Silverlight</title>
		<link>http://www.marcioalthmann.net/2010/10/fontes-customizadas-no-silverlight/</link>
		<comments>http://www.marcioalthmann.net/2010/10/fontes-customizadas-no-silverlight/#comments</comments>
		<pubDate>Wed, 13 Oct 2010 15:50:00 +0000</pubDate>
		<dc:creator>Márcio Fábio Althmann</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[XAML]]></category>

		<guid isPermaLink="false">http://www.marcioalthmann.net/2010/10/fontes-customizadas-no-silverlight/</guid>
		<description><![CDATA[Olá, tudo bem? Quando estamos criando nossas aplicações com Silverlight, existem algumas fontes que estão por default no Silverlight, mas ficamos um pouco limitados, já que a lista de fontes é pequena, hoje me perguntaram como colocar outras fontes no projeto, sem que um usuário que não possua a fonte instalada consiga visualizar tudo corretamente....<p><a href="http://www.marcioalthmann.net/2010/10/fontes-customizadas-no-silverlight/"> Leia mais →</a>]]></description>
			<content:encoded><![CDATA[<p>Olá, tudo bem?</p>
<p>Quando estamos criando nossas aplicações com Silverlight, existem algumas fontes que estão por default no Silverlight, mas ficamos um pouco limitados, já que a lista de fontes é pequena, hoje me perguntaram como colocar outras fontes no projeto, sem que um usuário que não possua a fonte instalada consiga visualizar tudo corretamente.</p>
<p>Primeiro vamos ver a lista de fontes do Silverlight.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2010/10/FontesCustomizadas01.jpg" rel="lightbox[289]" title="FontesCustomizadas01"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="FontesCustomizadas01" border="0" alt="FontesCustomizadas01" src="http://www.marcioalthmann.net/wp-content/uploads/2010/10/FontesCustomizadas01_thumb.jpg" width="159" height="240" /></a></p>
<p>A janela acima é a de escolha de fontes do Blend, as fontes que estão com a logo do Silverlight na frente, são as padrões do Silverlight, ele já possui essas fontes.</p>
<p>Só que não precisamos ficar limitados a essa lista, podemos facilmente escolher outras fontes, por exemplo, a que mais gosto para criar janelas para sistemas é a Segoe UI.</p>
<p>Agora temos um problema, e se o usuário do meu sistema, não possuir a Segoe UI instalada? Em alguns casos uma simples troca de fonte compromete todo o layout, afinal a fonte não é um detalhe simples em um layout.</p>
<p>É por isso que temos aquele CheckBox <em>Embed</em> logo abaixo do nome da fonte, assim que marcarmos esse CheckBox, os arquivos da fonte, os .ttf, serão compactados e adicionados em nosso projeto.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2010/10/FontesCustomizadas02.jpg" rel="lightbox[289]" title="FontesCustomizadas02"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="FontesCustomizadas02" border="0" alt="FontesCustomizadas02" src="http://www.marcioalthmann.net/wp-content/uploads/2010/10/FontesCustomizadas02_thumb.jpg" width="240" height="54" /></a></p>
<p>Agora no projeto, foi criada uma pasta <em>Fonts</em> e as fontes estão lá, detalhe que pelo Blend, não vamos ver o arquivo compactado, mas sim os arquivos da fonte.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2010/10/FontesCustomizadas03.jpg" rel="lightbox[289]" title="FontesCustomizadas03"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="FontesCustomizadas03" border="0" alt="FontesCustomizadas03" src="http://www.marcioalthmann.net/wp-content/uploads/2010/10/FontesCustomizadas03_thumb.jpg" width="240" height="201" /></a></p>
<p>Agora um último detalhe para quem quiser fazer esse processo manualmente, é que no XAML, a propriedade Font-Family recebe o caminho completo do arquivo .zip com as fontes mais o nome da fonte.</p>
<pre class="brush: xml;">&lt;Grid x:Name=&quot;LayoutRoot&quot; Background=&quot;White&quot;&gt;
    &lt;TextBlock Height=&quot;31&quot; Margin=&quot;167,190,165,0&quot; TextWrapping=&quot;Wrap&quot; Text=&quot;Márcio Fábio Althmann&quot; VerticalAlignment=&quot;Top&quot; FontFamily=&quot;/FontesCustomizadas;component/Fonts/Fonts.zip#Segoe UI&quot; FontSize=&quot;13.333&quot;/&gt;
&lt;/Grid&gt;</pre>
<p>Com esse recurso, conseguimos utilizar qualquer fonte no nosso projeto, mas vale lembrar que, estamos adicionando mais arquivo ao .xap final, então o tamanho final do arquivo vai aumentar, temos que tomar cuidado com isso para não jogarmos 10 mb de fontes depois reclamarmos que o site está “lento” para carregar <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://www.marcioalthmann.net/wp-content/uploads/2010/10/wlEmoticon-winkingsmile.png" />.</p>
<p>Abraços.</p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.marcioalthmann.net/2010/10/fontes-customizadas-no-silverlight/&amp;layout=button_count&amp;show_faces=false&amp;width=300&amp;action=like&amp;font=&amp;colorscheme=light&amp;locale=en_US" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:300px; height:20px"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://www.marcioalthmann.net/2010/10/fontes-customizadas-no-silverlight/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>XAML&#8211;Grid</title>
		<link>http://www.marcioalthmann.net/2010/10/xamlgrid/</link>
		<comments>http://www.marcioalthmann.net/2010/10/xamlgrid/#comments</comments>
		<pubDate>Mon, 04 Oct 2010 04:05:02 +0000</pubDate>
		<dc:creator>Márcio Fábio Althmann</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[XAML]]></category>

		<guid isPermaLink="false">http://www.marcioalthmann.net/2010/10/xamlgrid/</guid>
		<description><![CDATA[Continuando a série de posts sobre os painéis que podemos trabalhar com Silverlight ou WPF (falarei XAML), hoje vou falar do que considero o mais complexo, porém mais flexível, que é o Grid. Uma dúvida comum, não confundir o controle Grid que é o que mostrarei aqui, para layout, com o controle DataGrid onde mostramos...<p><a href="http://www.marcioalthmann.net/2010/10/xamlgrid/"> Leia mais →</a>]]></description>
			<content:encoded><![CDATA[<p>Continuando a série de posts sobre os painéis que podemos trabalhar com Silverlight ou WPF (falarei XAML), hoje vou falar do que considero o mais complexo, porém mais flexível, que é o Grid.</p>
<p>Uma dúvida comum, não confundir o controle Grid que é o que mostrarei aqui, para layout, com o controle DataGrid onde mostramos dados.</p>
<p>Para facilitar o entendimento do Grid, para quem está acostumado a trabalhar com Web, pense na <em>&lt;table&gt;</em> onde temos linhas e colunas, para quem trabalha com Windows Forms, pense no <em>TableLayoutPanel.</em></p>
<p>O Grid é colocado por padrão quando criamos um projeto com Silverlight ou WPF. Todos os códigos mostrados aqui serão feitos feitos utilizando um projeto em Silvelight.</p>
<pre class="brush: csharp;">&lt;UserControl
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    x:Class=&quot;Grid.MainPage&quot;
    Width=&quot;640&quot; Height=&quot;480&quot;&gt;

    &lt;Grid x:Name=&quot;LayoutRoot&quot; Background=&quot;White&quot;&gt;

    &lt;/Grid&gt;
&lt;/UserControl&gt;</pre>
<p>O código acima é o da MainPage criada por padrão no projeto, e é nele que vamos fazer os exemplos.</p>
<p>Antes de mostrar mais detalhes sobre o Grid, em palestras, ou mesmo no trabalho, algumas pessoas questionam porque trabalho diretamente com o XAML e não utilizo o editor visual. E se é obrigatório fazer assim. A resposta é não, tudo que vamos fazer aqui pode ser feito visualmente, no Blend ou no Visual Studio. Mas prefiro trabalhar direto com o XAML, acho muito mais prático e rápido, pode parecer estranho, mas é mais fácil alterar diretamente um elemento no XAML do que clicar em algo, ir para a janela de propriedades e ai sim alterar. Também é bom para quem está começando com XAML, com WPF ou Silverlight, eu acho que facilita muito o aprendizado escrever os códigos do que ficar clicando em botões.</p>
<p>Então chega de falar e vamos ao que interessa.</p>
<p>Como falei anteriormente, conseguimos configurar o Grid com linhas e colunas, a idéia desse artigo é fazer botões adição, subtração, multiplicação e divisão de uma calculadora, veja imagem abaixo.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2010/10/Grid01.png" rel="lightbox[267]" title="Grid01"><img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Grid01" border="0" alt="Grid01" src="http://www.marcioalthmann.net/wp-content/uploads/2010/10/Grid01_thumb.png" width="240" height="185" /></a></p>
<p><em></em></p>
<p>Os cadeados e linhas na imagem acima, são do editor visual do Blend, depois faço um artigo demonstrando os recursos do Blend.</p>
<p>O primeiro passo no nosso Grid é configurar as linhas e colunas, que nesse caso serão duas linhas e duas colunas. Veja o código abaixo.</p>
<pre class="brush: csharp;">&lt;Grid x:Name=&quot;LayoutRoot&quot; Background=&quot;White&quot;&gt;
    &lt;Grid.RowDefinitions&gt;
        &lt;RowDefinition&gt;&lt;/RowDefinition&gt;
        &lt;RowDefinition&gt;&lt;/RowDefinition&gt;
    &lt;/Grid.RowDefinitions&gt;
    &lt;Grid.ColumnDefinitions&gt;
        &lt;ColumnDefinition&gt;&lt;/ColumnDefinition&gt;
        &lt;ColumnDefinition&gt;&lt;/ColumnDefinition&gt;
    &lt;/Grid.ColumnDefinitions&gt;
&lt;/Grid&gt;</pre>
<p>Dentro de Grid.RowDefinitions criamos as linhas do nosso Grid, ali colocaremos a quantidade, tamanho, cor, o mesmo com as colunas que colocaremos dentro de Grid.ColumnDefinitions.</p>
<p>Depois voltaremos para detalhar melhor as opções de definição das linhas e das colunas.</p>
<p>Para terminar a criação dos elementos do nosso layout, falta criar os botões, e falar em qual célula do Grid cada botão ficará, veja abaixo.</p>
<pre class="brush: csharp;">&lt;Button x:Name=&quot;Adicao&quot; Content=&quot;+&quot; Margin=&quot;5&quot; /&gt;
&lt;Button x:Name=&quot;Subtracao&quot; Grid.Column=&quot;1&quot; Content=&quot;-&quot; Margin=&quot;5&quot;/&gt;
&lt;Button x:Name=&quot;Multiplicacao&quot; Grid.Row=&quot;1&quot; Content=&quot;*&quot; Margin=&quot;5&quot;/&gt;
&lt;Button x:Name=&quot;Divisao&quot; Grid.Row=&quot;1&quot; Grid.Column=&quot;1&quot; Content=&quot;/&quot; Margin=&quot;5&quot;/&gt;</pre>
<p>Nesse caso só Botões foram adicionados no layout, mas em qualquer outro elemento temos que definir as proprieades Grid.Column e Grid.Row, são nessas propriedades que definimos em qual linha ou coluna o controle será mostrado.</p>
<p>Os valores de linha e coluna são definidos por índice, então se temos duas linhas, os índices são 0 e 1, o mesmo para as colunas. O primeiro Button, que é o de Adição, ficará na primeira coluna da primeira linha, então não preciso definir Grid.Column nem Grid.Row, automaticamente ele ficará na posição 0 para linha e coluna.</p>
<p>O segundo Button que é o de Subtração ficará na linha 0 e coluna 1, novamente não precisamos informar qual é o Grid.Row, será definido 0 automaticamente, mas agora precisamos definir Grid.Column = 1.</p>
<p>O terceiro Button que é o de Multiplicação vai ficar na primeira coluna e na segunda linha, como a primeira coluna é a 0, não precisamos definir, o que não acontece com a linha, por isso informamos Grid.Row=1.</p>
<p>E por último, o Button de Divisão, que ficará na segunda linha e na na segunda coluna, esse não tem como omitir alguma configuração, então colocamos Grid.Column=1 e Grid.Row=1.</p>
<p>Vale notar também que em cada um dos Buttons coloquei Maring=5, só para ter uma margem de 5 pixels em cada lado e um botão não ficar grudado no outro, depois farei um artigo só sobre margens.</p>
<p>Vamos ver o XAML completo até o momento e o resultado final.</p>
<pre class="brush: csharp;">&lt;UserControl
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    x:Class=&quot;Grid.MainPage&quot;
    Width=&quot;640&quot; Height=&quot;480&quot;&gt;

    &lt;Grid x:Name=&quot;LayoutRoot&quot; Background=&quot;White&quot;&gt;
        &lt;Grid.RowDefinitions&gt;
            &lt;RowDefinition&gt;&lt;/RowDefinition&gt;
            &lt;RowDefinition&gt;&lt;/RowDefinition&gt;
        &lt;/Grid.RowDefinitions&gt;
        &lt;Grid.ColumnDefinitions&gt;
            &lt;ColumnDefinition&gt;&lt;/ColumnDefinition&gt;
            &lt;ColumnDefinition&gt;&lt;/ColumnDefinition&gt;
        &lt;/Grid.ColumnDefinitions&gt;

        &lt;Button x:Name=&quot;Adicao&quot; Content=&quot;+&quot; Margin=&quot;5&quot; /&gt;
        &lt;Button x:Name=&quot;Subtracao&quot; Grid.Column=&quot;1&quot; Content=&quot;-&quot; Margin=&quot;5&quot;/&gt;
        &lt;Button x:Name=&quot;Multiplicacao&quot; Grid.Row=&quot;1&quot; Content=&quot;*&quot; Margin=&quot;5&quot;/&gt;
        &lt;Button x:Name=&quot;Divisao&quot; Grid.Row=&quot;1&quot; Grid.Column=&quot;1&quot; Content=&quot;/&quot; Margin=&quot;5&quot;/&gt;
    &lt;/Grid&gt;
&lt;/UserControl&gt;</pre>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2010/10/Grid02.png" rel="lightbox[267]" title="Grid02"><img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Grid02" border="0" alt="Grid02" src="http://www.marcioalthmann.net/wp-content/uploads/2010/10/Grid02_thumb.png" width="240" height="217" /></a></p>
<p>Disse anteriormente que voltaria a falar mais sobre RowDifinitions e ColumnDefinitions, vamos ver alguns detalhes sobre Height e Width das linhas e colunas.</p>
<p>Conseguimos definir 3 formas de redimensionamento para o Grid.</p>
<ul>
<li><strong>Tamanho fixo: </strong>Onde definimos em pixels os valores para Width e Height. </li>
<li><strong>Tamando automático: </strong>Onde cada linha ou coluna ocupa o tamanho que precisa e nada mais. </li>
<li><strong>Tamanho proporcional: </strong>O espaço é dividido entre as linhas ou colunas, esse é o modo padrão e que nosso exemplo está utilizando no momento. </li>
</ul>
<p>Para definir o tamanho fixo, informamos o valor em pixel, veja abaixo a primeira linha com 100 pixels de altura.</p>
<pre class="brush: csharp;">&lt;Grid.RowDefinitions&gt;
    &lt;RowDefinition Height=&quot;100&quot;&gt;&lt;/RowDefinition&gt;
    &lt;RowDefinition&gt;&lt;/RowDefinition&gt;
&lt;/Grid.RowDefinitions&gt;</pre>
<p>Resultado.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2010/10/Grid03.png" rel="lightbox[267]" title="Grid03"><img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Grid03" border="0" alt="Grid03" src="http://www.marcioalthmann.net/wp-content/uploads/2010/10/Grid03_thumb.png" width="240" height="217" /></a></p>
<p>Agora vamos definir o tamanho da segunda linha como automático, ou sejá vai ocupar somente o tamanho necessário para mostrar o conteúdo.</p>
<pre class="brush: csharp;">&lt;Grid.RowDefinitions&gt;
    &lt;RowDefinition Height=&quot;100&quot;&gt;&lt;/RowDefinition&gt;
    &lt;RowDefinition Height=&quot;Auto&quot;&gt;&lt;/RowDefinition&gt;
&lt;/Grid.RowDefinitions&gt;</pre>
<p>Resultado.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2010/10/Grid04.png" rel="lightbox[267]" title="Grid04"><img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Grid04" border="0" alt="Grid04" src="http://www.marcioalthmann.net/wp-content/uploads/2010/10/Grid04_thumb.png" width="240" height="217" /></a></p>
<p>O tamanho proporcional pode ser definido cmo *, 2*, depende do que estamos construindo, vou definir agora a segunda linha para ocupar o resto do espaço do grid.</p>
<pre class="brush: csharp;">&lt;Grid.RowDefinitions&gt;
    &lt;RowDefinition Height=&quot;100&quot;&gt;&lt;/RowDefinition&gt;
    &lt;RowDefinition Height=&quot;*&quot;&gt;&lt;/RowDefinition&gt;
&lt;/Grid.RowDefinitions&gt;</pre>
<p>Resultado.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2010/10/Grid05.png" rel="lightbox[267]" title="Grid05"><img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Grid05" border="0" alt="Grid05" src="http://www.marcioalthmann.net/wp-content/uploads/2010/10/Grid05_thumb.png" width="240" height="217" /></a></p>
<p>Outro detalhe importante no Grid, é que existe Column e Row Span, ou sejá, posso colocar um TextBox por exemplo na primeira coluna, e falar que ele pode aumentar de tamanho até a segunda coluna, ele não ficará limitado ao tamanho da primeira coluna.</p>
<p>Para demonstrar isso vo criar mais uma linha no nosso layout.</p>
<pre class="brush: csharp;">&lt;Grid.RowDefinitions&gt;
    &lt;RowDefinition Height=&quot;100&quot;&gt;&lt;/RowDefinition&gt;
    &lt;RowDefinition Height=&quot;*&quot;&gt;&lt;/RowDefinition&gt;
    &lt;RowDefinition Height=&quot;Auto&quot;&gt;&lt;/RowDefinition&gt;
&lt;/Grid.RowDefinitions&gt;</pre>
<p>E agora vou colocar um TextBox, e quero que ele ocupe o tamanho das duas colunas, também mudei a cor de fundo desse TextBox para facilitar a visualização, então agora é só definir Grid.ColumnSpan=2 no TextBox e ele ocupa o tamanho das duas colunas, detalhe para a propriedade Width=Auto do TextBox.</p>
<pre class="brush: csharp;">&lt;TextBox x:Name=&quot;Resultado&quot; Grid.Row=&quot;2&quot; Grid.ColumnSpan=&quot;2&quot; Background=&quot;Yellow&quot; Width=&quot;Auto&quot; /&gt;</pre>
<p>Resultado.</p>
<p><a href="http://www.marcioalthmann.net/wp-content/uploads/2010/10/Grid06.png" rel="lightbox[267]" title="Grid06"><img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Grid06" border="0" alt="Grid06" src="http://www.marcioalthmann.net/wp-content/uploads/2010/10/Grid06_thumb.png" width="240" height="217" /></a></p>
<p>Essa foi uma pequena demonstração de todo o poder do Grid, o painel de layout mais poderoso e flexível disponível no XAML.</p>
<p>O código fonte está disponível para download logo abaixo.</p>
<p><iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-86c6502771b482be.office.live.com/embedicon.aspx/Exemplos/XamlGrid.rar" frameborder="0" marginwidth="0" scrolling="no"></iframe></p>
<p>Abraços.</p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.marcioalthmann.net/2010/10/xamlgrid/&amp;layout=button_count&amp;show_faces=false&amp;width=300&amp;action=like&amp;font=&amp;colorscheme=light&amp;locale=en_US" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:300px; height:20px"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://www.marcioalthmann.net/2010/10/xamlgrid/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
