<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>El Blog de José Luis Latorre en Geeks.ms : blend</title><link>http://geeks.ms/blogs/jllatorre/archive/tags/blend/default.aspx</link><description>Etiquetas: blend</description><dc:language /><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>"Project3DToMouse"  -  agregando Proyección 3D al movimiento del ratón con estilo</title><link>http://geeks.ms/blogs/jllatorre/archive/2010/06/07/quot-project3dtomouse-quot-agregando-proyecci-243-n-3d-al-movimiento-del-rat-243-n-con-estilo.aspx</link><pubDate>Mon, 07 Jun 2010 00:09:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:177720</guid><dc:creator>Jose Luis Latorre</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jllatorre/rsscomments.aspx?PostID=177720</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jllatorre/commentapi.aspx?PostID=177720</wfw:comment><comments>http://geeks.ms/blogs/jllatorre/archive/2010/06/07/quot-project3dtomouse-quot-agregando-proyecci-243-n-3d-al-movimiento-del-rat-243-n-con-estilo.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-size:12px;"&gt;Los Comportamientos, m&amp;aacute;s
conocidos como Behaviors, fueron una de las grandes adiciones de Silverlight 3 y
solo han hecho que mejorar con Silverlight 4. Uno de las cosas con las que
acostumbro a trastear en casa desde que apareci&amp;oacute; han sido las animaciones y
proyecciones 3D, tratando de conseguir efectos e interacciones avanzados... El
punto principal es que no son sencillos de implementar y es complejo de
&amp;quot;ajustar&amp;quot; por uno mismo ya que implica recodificar cada vez que se
quiere cambiar una personalizaci&amp;oacute;n... claro est&amp;aacute; que con los behaviors esto es
mucho m&amp;aacute;s c&amp;oacute;modo, ofreci&amp;eacute;ndonos un gran interfaz para personalizar nuestros
efectos sin mucho esfuerzo.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Con esto en mente he hecho este
comportamiento que realiza una Proyecci&amp;oacute;n 3D en base a la posici&amp;oacute;n relativa del
rat&amp;oacute;n. Lo pod&amp;eacute;is probar aqu&amp;iacute;: &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.brainsiders.com/playground/Project3DToMouse/default.html"&gt;http://www.brainsiders.com/playground/Project3DToMouse/default.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jllatorre/Sample.png"&gt;&lt;img border="0" src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/jllatorre/Sample.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Que hace?&lt;/p&gt;
&lt;ul class="unIndentedList"&gt;
&lt;li&gt;
Anima una proyecci&amp;oacute;n del FrameworkElement
objetivo en los ejes X e Y de forma proporcional a la posici&amp;oacute;n del rat&amp;oacute;n
respecto otro FrameworkElement, normalmente el panel base, LayoutRoot.&lt;/li&gt;
&lt;li&gt;
Calcula la proyecci&amp;oacute;n y la aplica con unos
grados de amplitud personalizable para los ejes X e Y. Porque no una &amp;uacute;nica
amplitud? pues porque la pantalla no es proporcional y esto permite ofrecer una
experiencia m&amp;aacute;s adecuada a las dimensiones de la misma, o bien ofrecer este
efecto de una forma muy concreta (vertical, horizontal).&lt;/li&gt;
&lt;li&gt;
Tambi&amp;eacute;n realiza una animaci&amp;oacute;n configurable en
tiempo y Easing, con lo que un dise&amp;ntilde;ador o alguien con gusto puede hacer alg&amp;uacute;n
efecto interesante, haciendo que se mueva suavemente o de una forma divertida
con un movimiento el&amp;aacute;stico, por ejemplo..&lt;/li&gt;
&lt;li&gt;
Tambi&amp;eacute;n he a&amp;ntilde;adido un flag para decidir si la
orientaci&amp;oacute;n ser&amp;aacute; respecto el rat&amp;oacute;n o versus el mismo.&lt;/li&gt;
&lt;li&gt;
y, si el rat&amp;oacute;n sale del &amp;aacute;mbito de actuaci&amp;oacute;n, nos
realiza una animaci&amp;oacute;n a la posici&amp;oacute;n de inicio.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jllatorre/BehaviorInterface.png"&gt;&lt;img border="0" src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/jllatorre/BehaviorInterface.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Yendo al c&amp;oacute;digo, todo est&amp;aacute;
categorizado con descripciones para ayudar a un uso intuitivo, se adapta bien a
FrameworkElements de tama&amp;ntilde;o fijo o din&amp;aacute;mico y el StoryBoard se genera en
memoria, con lo que no puede solaparse con otra animaci&amp;oacute;n del mismo nombre as&amp;iacute;
como este comportamiento puede aplicarse a m&amp;aacute;s de un elemento de la p&amp;aacute;gina o
control de usuario.&lt;/p&gt;
&lt;p&gt;Todo el &amp;quot;cableado&amp;quot; se
ha realizado en los eventos OnAttached y OnDetaching, el Invoke no hace nada,
as&amp;iacute; que podr&amp;iacute;a ser eliminado... He utilizado el TargetedTriggerAction ya que
necesito recoger los eventos del rat&amp;oacute;n desde un control que ocupe la pantalla
completa y aplicar el efecto a otro control preferiblemente m&amp;aacute;s peque&amp;ntilde;o para
apreciar el efecto. Ser&amp;iacute;a bueno que pudi&amp;eacute;ramos desactivar el &amp;quot;invoke&amp;quot;
de ciertos Behaviors para que los dise&amp;ntilde;adores no se confundan...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Sobre c&amp;oacute;mo utilizar este
comportamiento, es f&amp;aacute;cil, copiar el archivo Project2Mouse.cs a tu proyecto y
listo.. bueno, al menos para un desarrollador... para un dise&amp;ntilde;ador ser&amp;iacute;a bueno
que pudi&amp;eacute;ramos a&amp;ntilde;adir los comportamientos de una forma f&amp;aacute;cil, como un plug-in o
una carpeta de behaviors y blend los mostrase y permitiera utilizarlos tal cual
y, al a&amp;ntilde;adirlos, agregase las referencias pertinentes.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Otra cosa que hallo algo
por ahora algo molesta es que la actual interfaz es buena para 10 o 20 comportamientos
pero a la que se supera esta cifra hallar un comportamiento ya no es algo
inmediato.. Ser&amp;iacute;a muy bueno si pudi&amp;eacute;ramos categorizar los comportamientos por
nombre, autor, categor&amp;iacute;a y etiquetas..&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Para obtener el
comportamiento, este est&amp;aacute; publicado en la galer&amp;iacute;a de comportamientos de Microsoft
Expression, ubicada aqu&amp;iacute;:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gallery.expression.microsoft.com/en-us/Project3DToMouse"&gt;http://gallery.expression.microsoft.com/en-us/Project3DToMouse&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Obviamente con todo el
c&amp;oacute;digo fuente y con una aplicaci&amp;oacute;n de test.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:12px;"&gt;Estoy pensando en
publicar otros Behaviors, pero despu&amp;eacute;s de limpiar toda la porquer&amp;iacute;a que suele
aparecer al jugar con diferentes animaciones e ideas hasta que sale el efecto
deseado..&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:12px;"&gt;Si se te ocurre alguna
idea para un comportamiento (Behavior) interesante, estar&amp;eacute; interesado escuchar
de &amp;eacute;l para tratar de implementarlo... mientras tanto agradecer&amp;eacute; cualquier idea
de mejora sobre el ya implementado y, si os gusta, pues pod&amp;eacute;is votarlo positivamente
en la galer&amp;iacute;a :).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:12px;"&gt;Happy coding!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&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://geeks.ms/aggbug.aspx?PostID=177720" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jllatorre/archive/tags/3D/default.aspx">3D</category><category domain="http://geeks.ms/blogs/jllatorre/archive/tags/silverlight/default.aspx">silverlight</category><category domain="http://geeks.ms/blogs/jllatorre/archive/tags/blend/default.aspx">blend</category><category domain="http://geeks.ms/blogs/jllatorre/archive/tags/behavior/default.aspx">behavior</category><category domain="http://geeks.ms/blogs/jllatorre/archive/tags/silverlight+4/default.aspx">silverlight 4</category></item><item><title>Nuevos temas lanzados para Silverlight 4.0 - Estupendo pero.. es suficiente?</title><link>http://geeks.ms/blogs/jllatorre/archive/2010/05/31/nuevos-temas-lanzados-para-silverlight-4-0-estupendo-pero-es-suficiente.aspx</link><pubDate>Mon, 31 May 2010 10:57:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:177495</guid><dc:creator>Jose Luis Latorre</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jllatorre/rsscomments.aspx?PostID=177495</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/jllatorre/commentapi.aspx?PostID=177495</wfw:comment><comments>http://geeks.ms/blogs/jllatorre/archive/2010/05/31/nuevos-temas-lanzados-para-silverlight-4-0-estupendo-pero-es-suficiente.aspx#comments</comments><description>&lt;div&gt;Recientemte Tim Heuer ha lanzado varios &amp;quot;themes&amp;quot; para Silverlight 4, podeis leer &lt;a href="http://timheuer.com/blog/archive/2010/05/03/new-silverlight-4-themes-available-for-download.aspx"&gt;http://timheuer.com/blog/archive/2010/05/03/new-silverlight-4-themes-available-for-download.aspx&lt;/a&gt;&amp;nbsp;y &lt;a href="http://timheuer.com/blog/archive/2010/05/17/silverlight-4-tools-released-and-new-application-templates.aspx"&gt;http://timheuer.com/blog/archive/2010/05/17/silverlight-4-tools-released-and-new-application-templates.aspx&lt;/a&gt;, junto con el lanzamiento de las Silverlight tools for Visual Studio 2010. &lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;Aunque esta noticia se vio abrumada por la de las tools, creo que es muy interesante ya que estan definiendo (o como minimo proponiendo) un est&amp;aacute;ndar para la definici&amp;oacute;n de temas para Silverllight...&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Realmente hacia tiempo que esperabamos un ejemplo como estos, ya que es lo que pretende Silverlight &amp;amp; WPF y como herramienta de dise&amp;ntilde;o Blend: Desacoplar la interacci&amp;oacute;n entre la parte relativa al dise&amp;ntilde;ador y la parte asociada al desarrollador. &lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Este trabajo se mejor&amp;oacute; con la aparici&amp;oacute;n de los comportamientos, en Blend -Silverlight 3.0&amp;nbsp; y con soporte mejorado para Blend 4.0 (beta) y SL 4.0.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Por ahora el modo de generar y manejar todo esto, es colocar una serie de archivos en una carpeta de &amp;quot;Assets&amp;quot; que si se hace bien contempla varios archivos de estilos, librerias de recursos y varios comportamientos, ver &lt;a target="_blank" href="http://storage.timheuer.com/newthemes-structure1.png"&gt;http://storage.timheuer.com/newthemes-structure1.png&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;Tambien puede incorporar alguna fuente, imagen o video, segun el estilo en cuesti&amp;oacute;n.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Ello en si es algo grande, nos permite desacoplar la interacci&amp;oacute;n de estilos y es relativamente simple.... para desarrolladores...&amp;nbsp; para un dise&amp;ntilde;ador &amp;quot;puro&amp;quot; esto es complejo y cuesta.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Mi propuesta de enfoque es simplificar aun m&amp;aacute;s el modelo de interacci&amp;oacute;n para los temas ya que tienen entidad propia, pues asignarles un tipo de proyecto propio, Biblioteca de temas, estilo cosmopolitan.theme.dll...&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;De forma que un dise&amp;ntilde;ador pueda crear una biblioteca de temas estilo &amp;quot;Cosmopolitan.theme.dll&amp;quot; y la aplicaci&amp;oacute;n pueda cambiar en cualquier momento el theme que utiliza sin tener que eliminar archivos de estilos, behaviors, imagenes, fuentes, etc... sino incluso pueda tener varias librerias de estilo asociadas y cambiarla como desee v&amp;iacute;a codigo o, mejor, mediante un comportamiento.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;Ventajas de mi propuesta: &lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;El dise&amp;ntilde;ador podr&amp;aacute; abstraerse de la complejidad de la aplicacion y&amp;nbsp;dise&amp;ntilde;ar solo en la biblioteca de estilos.&lt;/li&gt;
&lt;li&gt;El dise&amp;ntilde;ador evita tocar todo c&amp;oacute;digo sensible del desarrollador - favorecemos la separaci&amp;oacute;n y desacoplamiento.&lt;/li&gt;
&lt;li&gt;Favorecemos el mercado potencial de &amp;quot;themes&amp;quot; para Silverlight. Si yo quiero vender themes, seria bueno que la tecnolog&amp;iacute;a los soportase.&lt;/li&gt;
&lt;li&gt;Favorece el reaprovechamiento de themes para crear otros y estimular asi la creatividad y &amp;quot;competitividad&amp;quot; entre dise&amp;ntilde;adores (y desarrolladores).&lt;/li&gt;
&lt;li&gt;Se hara por fin muy visible la ventaja de Blend y Silverlight para desacoplar totalmente la parte de aspecto e interacci&amp;oacute;n visual con la de programaci&amp;oacute;n. (muy necesario).&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Por otro lado es muy facil montar un proyecto de test generico en el cual se visualicen varias paginas con todos los controles, los de SL basicos, los del SDK, graficos, los de la Toolkit asi como que sea facil de a&amp;ntilde;adir dinamicamente controles propios... y que el dise&amp;ntilde;ador probase el estilo sin menor problema.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Y ya por pedir, esto seria buenisimo que estuviera integrado en Blend 4.0....&lt;/div&gt;
&lt;div&gt;Por otro lado, el tipo de dll propuesto &amp;quot;theme.dll&amp;quot; no es que es m&amp;aacute;s que una dll normal de silverlight, es solo una plantilla facil de hacer con implementaciones de todos los controles por defecto. solo se cambiarian las plantillas para que gestionaran estas plantillas permitiendo su carga y descarga dinamica en base al directorio de Assets, por ejemplo). MEF nos permitiria hacer esto muy facilmente..&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Como lo veis? que opinion os merece esta idea??&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;Si os parece bien podeis votarla como una propuesa de features para Silverlight: &lt;a href="http://dotnet.uservoice.com/forums/4325-silverlight-feature-suggestions/suggestions/793999-support-for-theme-projects-dynamic-theme-switchi"&gt;http://dotnet.uservoice.com/forums/4325-silverlight-feature-suggestions/suggestions/793999-support-for-theme-projects-dynamic-theme-switchi&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=177495" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jllatorre/archive/tags/silverlight/default.aspx">silverlight</category><category domain="http://geeks.ms/blogs/jllatorre/archive/tags/blend/default.aspx">blend</category><category domain="http://geeks.ms/blogs/jllatorre/archive/tags/themes/default.aspx">themes</category><category domain="http://geeks.ms/blogs/jllatorre/archive/tags/behavior/default.aspx">behavior</category><category domain="http://geeks.ms/blogs/jllatorre/archive/tags/styles/default.aspx">styles</category></item></channel></rss>