Desenvolvimento - Silverlight

Silverlight 3 – Efeitos com Pixel Shader, parte final

Dando continuidade ao artigo Silverlight 3 – Efeitos com Pixel Sharder, parte 01 onde vimos como criar um novo efeito utilizando o SDK do DirectX, agora vamos ver como podemos utilizar esse efeito que criamos e compilamos em nossos projeto com Silverlight.

por Márcio Fábio Althmann



Dando continuidade ao artigo Silverlight 3 – Efeitos com Pixel Sharder, parte 01onde vimos como criar um novo efeito utilizando o SDK do DirectX, agora vamos ver como podemos utilizar esse efeito que criamos e compilamos em nossos projeto com Silverlight.

Crie um novo projeto chamado EstudoPixelShader no Blend, para deixar a estrutura melhor organizada, crie uma pasta chamada Efeitos e adicione o arquivo InvertColor.ps criado no primeiro artigo na pasta, a estrutura do projeto ficará da seguinte forma.

O próximo passo é que devemos alterar o Build Action do arquivo InvertColor.ps para Resource, para fazer isso, clique com o botão direito no projero, e depois em Edit in Visual Studio. No Visual Studio altere o build action do arquivo e salve o projeto.

Feito isso o Blend vai pedir para recarregar o projeto.

Agora vamos criar uma classe chamada InvertColorEffect que herda da classe ShaderEffect. É essa classe que vamos chamar para utilizar o efeito

O primeiro passo é importar o namespace System.Windows.Media.Effects;

   1: using System.Windows.Media.Effects;

O código todo da classe fica.

   1: public class InvertColorEffect : ShaderEffect
   2: {
   3:     public InvertColorEffect()
   4:     {
   5:         var uri = new Uri(@"/EstudoPixelShader;component/Efeitos/InvertColor.ps", UriKind.Relative);
   6:         var pixelShader = new PixelShader();
   7:         pixelShader.UriSource = uri;
   8:         PixelShader = pixelShader;
   9:     }
  10: }

Basicamente criamos um Uri apontando para o nosso arquivo de efeito um detalhe importante para o código funcionar, siga a seguinte ordem /SeuNamespace;component/SeuArquivo.ps. Em seguida criamos um novo PixelShader e informamos o Uri criado anteriormente na propriedade UriSource do mesmo, em seguida passamos esse novo PixelShader que criamos para a propriedade PixelShader da nossa classe.

Feito isso é só compilar e utilizar o efeito, arraste um foto qualquer para o projeto e clique no botão para adicionar efeitos.

A janela de efeitos vai abrir, e além dos dois efeitos default que temos, agora podemos selecionar o nosso InvertColorEffect.

Feito isso o efeito já é aplicado a nossa imagem.

Nós podemos utilziar esse efeito em controles, vídeos, fotos da mesma forma que fazemos com os efeitos default, com isso vimos como criar um efeito cmo PixelShader customizado o que é uma ótima forma de criar ótimos efeitos para os nossos projetos.]

Abraços.

Márcio Fábio Althmann

Márcio Fábio Althmann