{"id":105,"date":"2007-05-16T10:26:17","date_gmt":"2007-05-16T17:26:17","guid":{"rendered":"http:\/\/labs.zeh.com.br\/blog\/?p=105"},"modified":"2007-05-18T20:59:13","modified_gmt":"2007-05-19T03:59:13","slug":"tweening-by-code-comes-to-wpf","status":"publish","type":"post","link":"https:\/\/labs.zeh.com.br\/blog\/?p=105","title":{"rendered":"Tweening by code comes to WPF"},"content":{"rendered":"<p><a href=\"http:\/\/www.lookorfeel.com\">Darren David<\/a> has just released the first public version of his tweening classes for Microsoft&#8217;s WPF. Called &#8220;PennerDoubleAnimation&#8221; and &#8220;Animator&#8221;, they&#8217;re <a href=\"http:\/\/code.google.com\/p\/wpf-animation\/\">hosted at Google Code<\/a> and help developers create animations by code more easily while fighting some specific WPF caveats. To quote,<\/p>\n<blockquote><p>I had three primary goals in mind:<\/p>\n<p>* Be able to start an animation and assign an \u201cOnComplete\u201d handler in one line of code<br \/>\n* Have those animations set the final value of the property to the \u201cTo\u201d value of the animation, then disappear (basically, if I animate the Canvas.Left property of a Rectangle from 0 to 100, I expect the Canvas.Left property to be 100 when the animation completes, and I want to be able to assign a new value directly to that property)<br \/>\n* Bring the canonical Penner easing equations to WPF, but leverage the WPF animation engine so I can use them in XAML or in code.<\/p><\/blockquote>\n<p>Apparently he&#8217;s been successful on those goals. Check <a href=\"http:\/\/blog.lookorfeel.com\/index.php\/2007\/05\/14\/pennerdoubleanimation-and-animator-code-based-wpf-animation-simplified\/\">this blog post<\/a> for more details.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Darren David has just released the first public version of his tweening classes for Microsoft&#8217;s WPF. Called &#8220;PennerDoubleAnimation&#8221; and &#8220;Animator&#8221;, they&#8217;re hosted at Google Code and help developers create animations by code more easily while fighting some specific WPF caveats. To quote, I had three primary goals in mind: * Be able to start an [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[10],"tags":[],"_links":{"self":[{"href":"https:\/\/labs.zeh.com.br\/blog\/index.php?rest_route=\/wp\/v2\/posts\/105"}],"collection":[{"href":"https:\/\/labs.zeh.com.br\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/labs.zeh.com.br\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/labs.zeh.com.br\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/labs.zeh.com.br\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=105"}],"version-history":[{"count":0,"href":"https:\/\/labs.zeh.com.br\/blog\/index.php?rest_route=\/wp\/v2\/posts\/105\/revisions"}],"wp:attachment":[{"href":"https:\/\/labs.zeh.com.br\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=105"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/labs.zeh.com.br\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=105"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/labs.zeh.com.br\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}