<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0"><id>tag:blogger.com,1999:blog-563071785757928434</id><updated>2013-04-26T13:56:47.645+02:00</updated><category term="Visual Studio" /><category term="xaml" /><category term="Add-In" /><category term="Microsoft" /><category term="Silverlight 5" /><category term="Mango" /><category term=".Net German" /><category term="Computer graphics" /><category term=".Net" /><category term="FB" /><category term="ARM" /><category term="nui" /><category term="HLSL" /><category term="Unity3D" /><category term="Balder" /><category term="Silverlight 2" /><category term="Shader" /><category term="Interview" /><category term="kinect" /><category term="PicLab" /><category term="Augmented Reality" /><category term="modern ui" /><category term="Matrix3DEx" /><category term="Windows Phone" /><category term="natural user interface" /><category term="WriteableBitmapEx" /><category term="picfx" /><category term="Imagine Cup" /><category term="wp7" /><category term="Win8" /><category term="Coding4Fun" /><category term="Live" /><category term="Store apps" /><category term="WriteableBitmap" /><category term="Impressum" /><category term="surface" /><category term="SL53D" /><category term="Silverlight 3" /><category term="review" /><category term="windows phone store" /><category term="k4w" /><category term="work" /><category term="Facebook" /><category term="Mobile" /><category term="mix11" /><category term="windows store" /><category term="wpdev" /><category term="Website" /><category term="personal" /><category term="Webcam" /><category term="JPEG" /><category term="Wp7Dev" /><category term="Silverlight 4" /><category term="MVP" /><category term="metro" /><category term="wp8dev" /><category term="ux" /><category term="Blogger" /><category term="book" /><category term="Open Source" /><category term="Blogging" /><category term="WinRT" /><category term="C#" /><category term="windows 8" /><category term="NuGet" /><category term="3D" /><category term="wpf" /><category term="Demoscene" /><category term="Physical simulation" /><category term="marketing" /><category term="SLARToolkit" /><category term="identity mine" /><category term="WACK" /><category term="Silverlight" /><title type="text">Kodierer [Coder]</title><subtitle type="html">Windows, Windows Phone, Stuff.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://kodierer.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default?start-index=26&amp;max-results=25" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>82</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Kodierer" /><feedburner:info uri="kodierer" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-3090075018709680655</id><published>2013-03-19T18:15:00.000+01:00</published><updated>2013-03-19T19:36:40.739+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3D" /><category scheme="http://www.blogger.com/atom/ns#" term="k4w" /><category scheme="http://www.blogger.com/atom/ns#" term="Computer graphics" /><category scheme="http://www.blogger.com/atom/ns#" term="kinect" /><category scheme="http://www.blogger.com/atom/ns#" term="ux" /><category scheme="http://www.blogger.com/atom/ns#" term="nui" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="natural user interface" /><category scheme="http://www.blogger.com/atom/ns#" term="Augmented Reality" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><title type="text">Kinect and Leap Motion in Love</title><content type="html">&lt;a href="http://4.bp.blogspot.com/-Y22mRSImdMI/UUg8yXdOgqI/AAAAAAAAAc0/q5pOfmG-JPU/s1600/192x192.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-Y22mRSImdMI/UUg8yXdOgqI/AAAAAAAAAc0/q5pOfmG-JPU/s320/192x192.jpg" /&gt;&lt;/a&gt;&lt;a href="http://en.wikipedia.org/wiki/Natural_user_interface"&gt;Natural User Interfaces&lt;/a&gt;&amp;nbsp;are a trend since a few years and the development of new hardware technology for affordable prices helps to push that movement into the consumer market. The&amp;nbsp;&lt;a href="http://www.microsoft.com/en-us/kinectforwindows/"&gt;Kinect&lt;/a&gt;&amp;nbsp;is one example, the soon-to-be-available&amp;nbsp;&lt;a href="https://www.leapmotion.com/"&gt;Leap Motion&lt;/a&gt; is another one or the&amp;nbsp;announced&amp;nbsp;&lt;a href="https://getmyo.com/"&gt;MYO device&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'm one of the lucky people who &lt;a href="https://www.leapmotion.com/developers"&gt;applied&lt;/a&gt; and actually got a Leap Motion developer device before its release. I also have a Kinect for Windows. Both devices use computer&amp;nbsp;vision&amp;nbsp;with various sensors combined with&amp;nbsp;artificial&amp;nbsp;intelligence like machine learning for the object recognition. The Kinect for Windows recognizes skeletons&amp;nbsp;with joints in a distance of &amp;nbsp;80 - 400 cm or 40 - 300 cm (Near Mode) which means the Kinect is perfect for the mid range distance but not for close PC interaction. The Leap Motion on the other hand is more for the close range and detects hands, fingers and pen-like objects very precisely. That's why I wanted to combine them and build a proof of concept hybrid solution that leverages both Kinect and Leap Motion to get the best of both worlds (close and mid distance).&lt;br /&gt;&lt;br /&gt;In the video below I demo my proof of concept which is based on the &lt;a href="http://www.microsoft.com/en-us/kinectforwindows/develop/developer-downloads.aspx"&gt;Kinect for Windows SDK 1.7&lt;/a&gt; and its Interactions and Controls components, plus the Leap Motion developer device and its beta SDK.&lt;br /&gt;By the way, the Kinect for Windows SDK 1.7 is now &lt;a href="http://blogs.msdn.com/b/kinectforwindows/archive/2013/03/18/the-latest-kinect-for-windows-sdk-is-here.aspx"&gt;publicly available&lt;/a&gt;&amp;nbsp;and the bits are nothing less than awesome.&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="360" src="http://www.youtube.com/embed/iOHjVZkx8DM?rel=0&amp;amp;hd=1" width="640"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In case you are wondering about the infrared interference of the Kinect and Leap Motion. There's some, but I actually didn't notice any serious effect on the recognition capabilities of the Kinect nor the Leap.&lt;br /&gt;Below is a picture of the Leap Motion as seen&amp;nbsp;through&amp;nbsp;the Kinect's infrared stream. The Leap Motion has three light sources but those are not very bright.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-hHWpSsrv3SE/UUh22qBdD3I/AAAAAAAAAdE/1H0yvGQD5Q0/s1600/kinect_infrared.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-hHWpSsrv3SE/UUh22qBdD3I/AAAAAAAAAdE/1H0yvGQD5Q0/s1600/kinect_infrared.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Some might say the Leap Motion is a competitor to the Kinect for Windows, I see it more like a nice addition to our developer toolset and the beginning of a story: Kinect ♥ Leap Motion.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/Ix8HKCAEAZ4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/3090075018709680655/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2013/03/kinect-and-leap-motion-in-love.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/3090075018709680655" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/3090075018709680655" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/Ix8HKCAEAZ4/kinect-and-leap-motion-in-love.html" title="Kinect and Leap Motion in Love" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-Y22mRSImdMI/UUg8yXdOgqI/AAAAAAAAAc0/q5pOfmG-JPU/s72-c/192x192.jpg" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Dresden, Germany</georss:featurename><georss:point>51.0504088 13.737262099999953</georss:point><georss:box>51.0504088 13.737262099999953 51.0504088 13.737262099999953</georss:box><feedburner:origLink>http://kodierer.blogspot.com/2013/03/kinect-and-leap-motion-in-love.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-7359308484575295497</id><published>2012-12-12T21:15:00.000+01:00</published><updated>2012-12-12T21:15:23.395+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="wp8dev" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="windows phone store" /><category scheme="http://www.blogger.com/atom/ns#" term="wpdev" /><title type="text">Robot Work - Reducing the Windows Phone Localization Friction a bit</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-o_gXYHdnXBA/UMi56E26OFI/AAAAAAAAAb0/6XMnMDdKVE0/s1600/PL_Logo_without_Text_300x300.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-o_gXYHdnXBA/UMi56E26OFI/AAAAAAAAAb0/6XMnMDdKVE0/s1600/PL_Logo_without_Text_300x300.png" /&gt;&lt;/a&gt;&lt;/div&gt;Windows Phone 8 now supports &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206974(v=vs.105).aspx"&gt;3 different screen resolutions&lt;/a&gt; which is very nice since there are some great high resolution devices out there and the user has the choice and isn't forced into a one fits all model.&amp;nbsp;However&amp;nbsp; there's also a downside for Windows Phone developers since now also 3 times the amount of screenshots have to be submitted to the Store. If an app has localized versions this adds up very quickly. For example, &lt;a href="http://windowsphone.com/s?appid=5db119bf-7ad5-df11-a844-00237de2db9e"&gt;Pictures Lab&lt;/a&gt; supports 11 languages and the &lt;a href="http://www.wpcentral.com/pictures-lab-update-windows-phone-8-we-take-sneak-peek"&gt;soon-to-released v5 update&lt;/a&gt; for WP8 also all 3 resolutions: 11 x 3 x 8 screenshots = 264! That's a crazy amount of mindless click-through work to take all those screenshots, not to mention the Dev Center submission process.&lt;br /&gt;Unfortunately there is no automated way or better support by the tools, so one has to do this ridiculous&amp;nbsp;amount&amp;nbsp;of manual work. &amp;nbsp;In a future version of the tools I'd really love to see some kind of macro recorder which records certain steps including screenshot actions and can then&amp;nbsp;use the recorded steps to&amp;nbsp;play this for all supported app languages and generate the remaining screenshots automatically.&lt;br /&gt;&lt;br /&gt;In this quick post I want to share some practices I used in order to reduce the work at least a bit for the Pictures Lab v5 update:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Only create screenshots for the 720p (720 x 1280) and the WXGA (768 x 1280) resolution. The WVGA (480 x 800) screenshots can be generated from the WXGA images by scaling those down by 1.6. In contrast to upscaling, are the downscaling artifacts hardly visible if a good algorithm is used. I used my favorite image viewer &lt;a href="http://www.irfanview.com/"&gt;IrfanView&lt;/a&gt; and its batch processing feature which can scale down by the longest side, rename by a pattern, convert, etc.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/--4yh1grD3oE/UMjbqFi13pI/AAAAAAAAAcU/nLDJNG1w94E/s1600/Capture.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" height="409" src="http://4.bp.blogspot.com/--4yh1grD3oE/UMjbqFi13pI/AAAAAAAAAcU/nLDJNG1w94E/s640/Capture.PNG" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Add some code to easily switch between UI languages in your app so you don't only rely on the system language and need to reboot the emulator to switch languages. An app's UI language can be set globally by using &lt;pre&gt;System.Threading.Thread.CurrentThread.CurrentUICulture&lt;/pre&gt; For example: &lt;pre&gt;System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("de-DE");&lt;/pre&gt;in the App.xaml.cs Launching event.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Use a macro recorder / scripting to save a bit time with the&amp;nbsp;repetitive&amp;nbsp;tasks of taking screenshots only with different UI&amp;nbsp;languages. I used a little free tool called &lt;a href="http://byshynet.com/software.php?id=3"&gt;Mouse Recorder Pro&lt;/a&gt;. This tool records your mouse and keyboard actions and can then play it back also with up to 40% faster playback speed. Of course this doesn't work for all apps and only when using the emulators, esp. uncontrollable live content would likely not work, but it worked for my scenario quite well and saved me from creating all 264 screenshots manually. In fact I watched the magic ghost mouse do its job most of the time and worked on other stuff.&lt;br /&gt;A few gotchas when using the Mouse Recorder Pro with the WP emulators:&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Don't click on Pivot headers and rather use the swipe gesture to change between Pivot items. The header texts will have different lengths in different languages.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Try to avoid the bounce effect of the ScrollViewer, it would result in random offsets and the Mouse Recorder playback will then have non-matching offsets recorded.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Do a dummy save in the destination folder for the screenshots&amp;nbsp;before each playback&amp;nbsp;so the playback will save the files to the right folder. This will avoid file name collisions which would need manual input.&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;div&gt;Of course there's a lot of room for improvements, but maybe&amp;nbsp;the described practices help to reduce the friction that comes with&amp;nbsp;localization&amp;nbsp;at least a bit until a better solution is known.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/8JxJvoavx84" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/7359308484575295497/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2012/12/robot-work-reducing-windows-phone.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/7359308484575295497" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/7359308484575295497" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/8JxJvoavx84/robot-work-reducing-windows-phone.html" title="Robot Work - Reducing the Windows Phone Localization Friction a bit" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-o_gXYHdnXBA/UMi56E26OFI/AAAAAAAAAb0/6XMnMDdKVE0/s72-c/PL_Logo_without_Text_300x300.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2012/12/robot-work-reducing-windows-phone.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-4461577740963392506</id><published>2012-11-01T22:06:00.004+01:00</published><updated>2012-11-01T22:06:57.677+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ARM" /><category scheme="http://www.blogger.com/atom/ns#" term="WACK" /><category scheme="http://www.blogger.com/atom/ns#" term="surface" /><category scheme="http://www.blogger.com/atom/ns#" term="WinRT" /><category scheme="http://www.blogger.com/atom/ns#" term="windows store" /><category scheme="http://www.blogger.com/atom/ns#" term="windows 8" /><category scheme="http://www.blogger.com/atom/ns#" term="modern ui" /><category scheme="http://www.blogger.com/atom/ns#" term="Store apps" /><title type="text">WACK ARM</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-seqmpXfgqgw/UJLh2TtUClI/AAAAAAAAAbk/FV1FELPHDMU/s1600/surface.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-seqmpXfgqgw/UJLh2TtUClI/AAAAAAAAAbk/FV1FELPHDMU/s1600/surface.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;If you are developing Windows 8 Store apps you should really test those on low-powered x86 and ARM devices. The difference to your high-end x64 developer machine can be dramatically, esp. if you use a non-default design.&lt;br /&gt;Testing on ARM is important and Tim Heuer wrote a &lt;a href="http://timheuer.com/blog/archive/2012/10/26/remote-debugging-windows-store-apps-on-surface-arm-devices.aspx"&gt;nice post&lt;/a&gt; which shows how to remotely deploy, debug and profile on ARM devices right from Visual Studio 2012.  Another nice thing which performs a couple of automated tests is the &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh694081.aspx"&gt;Windows App Certification Kit&lt;/a&gt; (WACK). Unfortunately is the WACK tool for ARM hidden inside the Windows 8 SDK, but here's how to find it:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download the Windows 8 SDK web setup from &lt;a href="http://msdn.microsoft.com/en-us/windows/desktop/hh852363.aspx"&gt;here&lt;/a&gt;&amp;nbsp;and run it.&lt;/li&gt;&lt;li&gt;Choose to download the SDK files for offline usage.&lt;/li&gt;&lt;li&gt;On the "Select the features you want to download" screen it's enough if you only select the "Windows App Certification Kit" checkbox.&lt;/li&gt;&lt;li&gt;After the download is finished, you will find an "Installers" subfolder in the download target folder.&lt;/li&gt;&lt;li&gt;Copy the "Windows App Certification Kit arm-arm_en-us.msi" from the "Installers" folder to an USB key or SkyDrive.&lt;/li&gt;&lt;li&gt;Open the "Windows App Certification Kit arm-arm_en-us.msi" on your ARM device and install the WACK on it.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Search for "Windows App Cert Kit" on your ARM device using the Search Charm and &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh694081.aspx"&gt;run the WACK&lt;/a&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/plNjfP6H6Us" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/4461577740963392506/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2012/11/wack-arm.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/4461577740963392506" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/4461577740963392506" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/plNjfP6H6Us/wack-arm.html" title="WACK ARM" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-seqmpXfgqgw/UJLh2TtUClI/AAAAAAAAAbk/FV1FELPHDMU/s72-c/surface.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2012/11/wack-arm.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-1485152624974262087</id><published>2012-10-30T19:53:00.000+01:00</published><updated>2012-10-30T19:53:38.228+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="WriteableBitmapEx" /><category scheme="http://www.blogger.com/atom/ns#" term="wp8dev" /><category scheme="http://www.blogger.com/atom/ns#" term="metro" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="windows 8" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><category scheme="http://www.blogger.com/atom/ns#" term="Computer graphics" /><category scheme="http://www.blogger.com/atom/ns#" term="WinRT" /><category scheme="http://www.blogger.com/atom/ns#" term="wpf" /><category scheme="http://www.blogger.com/atom/ns#" term="windows store" /><category scheme="http://www.blogger.com/atom/ns#" term="Wp7Dev" /><category scheme="http://www.blogger.com/atom/ns#" term="xaml" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="wpdev" /><category scheme="http://www.blogger.com/atom/ns#" term="WriteableBitmap" /><category scheme="http://www.blogger.com/atom/ns#" term="Win8" /><title type="text">Faster! - WriteableBitmapEx for Windows Phone 8 and WinRT Updated</title><content type="html">&lt;a href="http://1.bp.blogspot.com/-XZ6szsJIabU/TRyM653SPtI/AAAAAAAAAPs/FQyB6v08SoA/s1600/wbx_announcement.png" imageanchor="1" style="clear: left; display: inline !important; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-XZ6szsJIabU/TRyM653SPtI/AAAAAAAAAPs/FQyB6v08SoA/s1600/wbx_announcement.png" /&gt;&lt;/a&gt;The &lt;a href="http://go.microsoft.com/fwlink/?LinkID=261873"&gt;Windows Phone 8 SDK&lt;/a&gt; is now available and with that&amp;nbsp;&lt;a href="http://writeablebitmapex.codeplex.com/"&gt;WriteableBitmapEx&lt;/a&gt;&amp;nbsp;was updated too. The performance of the WinRT XAML version was also improved dramatically and an update is highly recommended.&lt;br /&gt;WriteableBitmapEx&amp;nbsp;is available&amp;nbsp;for 4 platforms: Windows Phone 8 and 7, WPF, Silverlight and Windows Store WinRT .NET XAML.&lt;br /&gt;&lt;b&gt;You can download the&amp;nbsp;binaries&amp;nbsp;&lt;a href="http://writeablebitmapex.codeplex.com/releases/view/96927"&gt;here&lt;/a&gt;&amp;nbsp;or via the&amp;nbsp;&lt;a href="http://nuget.org/List/Packages/WriteableBitmapEx"&gt;NuGet package&lt;/a&gt;.&amp;nbsp;&lt;/b&gt;The&lt;b&gt;&amp;nbsp;&lt;/b&gt;packages contain the WriteableBitmapEx binaries. As usual all samples and the source code can be found in the&amp;nbsp;&lt;a href="http://writeablebitmapex.codeplex.com/SourceControl/list/changesets"&gt;repository&lt;/a&gt;.&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/c9-G5Z8AXB0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/1485152624974262087/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2012/10/faster-writeablebitmapex-for-windows.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/1485152624974262087" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/1485152624974262087" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/c9-G5Z8AXB0/faster-writeablebitmapex-for-windows.html" title="Faster! - WriteableBitmapEx for Windows Phone 8 and WinRT Updated" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-XZ6szsJIabU/TRyM653SPtI/AAAAAAAAAPs/FQyB6v08SoA/s72-c/wbx_announcement.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2012/10/faster-writeablebitmapex-for-windows.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-185538704734259853</id><published>2012-10-28T19:57:00.000+01:00</published><updated>2012-10-28T19:59:09.088+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="WinRT" /><category scheme="http://www.blogger.com/atom/ns#" term="metro" /><category scheme="http://www.blogger.com/atom/ns#" term="windows 8" /><category scheme="http://www.blogger.com/atom/ns#" term="xaml" /><category scheme="http://www.blogger.com/atom/ns#" term="Store apps" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><category scheme="http://www.blogger.com/atom/ns#" term="Win8" /><title type="text">Know Your Users - Windows 8 Store App System Info</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-3kgi14MXqlU/UIzqs0GUIYI/AAAAAAAAAbU/s6_B6e6Ia9k/s1600/win8devices.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-3kgi14MXqlU/UIzqs0GUIYI/AAAAAAAAAbU/s6_B6e6Ia9k/s1600/win8devices.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;This is just a quick a post to provide a little class for Windows 8 Store app development. The SystemInformation class gathers some useful information about the current system and can dump those as a string. I usually have such a class for all the platforms I work on and it's very helpful for logging and error analysis, but it also serves as a list of all available system information which are scattered in different APIs. The info can also be used to dynamically adapt the app, etc.&lt;br /&gt;&lt;br /&gt;Here's the code I have so far, you can also download the complete class &lt;a href="https://dl.dropbox.com/u/2681028/BlogData/Win8SysInfo/SystemInformation.cs"&gt;here&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: c-sharp;"&gt;public static async Task&lt;string&gt;&lt;string&gt; Dump(bool shouldDumpCompleteDeviceInfos = false)&lt;br /&gt;{&lt;br /&gt;   var builder = new StringBuilder();&lt;br /&gt;   var packageId = Windows.ApplicationModel.Package.Current.Id;&lt;br /&gt;   var clientDeviceInformation = new EasClientDeviceInformation();&lt;br /&gt;    &lt;br /&gt;   // Get hardware Id&lt;br /&gt;   var token = HardwareIdentification.GetPackageSpecificToken(null);&lt;br /&gt;   var stream = token.Id.AsStream();&lt;br /&gt;   string hardwareId;&lt;br /&gt;   using (var reader = new BinaryReader(stream))&lt;br /&gt;   {&lt;br /&gt;      var bytes = reader.ReadBytes((int)stream.Length);&lt;br /&gt;      hardwareId = BitConverter.ToString(bytes);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   builder.AppendLine("***** System Infos *****");&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;#if DEBUG&lt;br /&gt;   builder.AppendLine("DEBUG");&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;#endif&lt;br /&gt;   builder.AppendFormat("Time: {0}", DateTime.Now.ToUniversalTime().ToString("r"));&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("App Name: {0}", packageId.Name);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("App Version: {0}.{1}.{2}.{3}", packageId.Version.Major, packageId.Version.Minor, packageId.Version.Build, packageId.Version.Revision);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("App Publisher: {0}", packageId.Publisher);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("Supported Package Architecture: {0}", packageId.Architecture);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("Installed Location: {0}", Windows.ApplicationModel.Package.Current.InstalledLocation.Path);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("Store App Id: {0}", CurrentApp.AppId);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   if (CurrentApp.LicenseInformation.IsActive)&lt;br /&gt;   {&lt;br /&gt;      var listingInformation = await CurrentApp.LoadListingInformationAsync();&lt;br /&gt;      builder.AppendFormat("Store Current Market: {0}", listingInformation.CurrentMarket);&lt;br /&gt;      builder.AppendLine();&lt;br /&gt;   }&lt;br /&gt;   builder.AppendFormat("Culture: {0}", CultureInfo.CurrentCulture);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("OS: {0}", clientDeviceInformation.OperatingSystem);&lt;br /&gt;   builder.AppendLine(); &lt;br /&gt;   builder.AppendFormat("System Manufacturer: {0}", clientDeviceInformation.SystemManufacturer);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("System Product Name: {0}", clientDeviceInformation.SystemProductName);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("System Sku: {0}", clientDeviceInformation.SystemSku);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("System Name: {0}", clientDeviceInformation.FriendlyName);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("System ID: {0}", clientDeviceInformation.Id);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("Hardware ID: {0}", hardwareId);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("User Display Name: {0}", await UserInformation.GetDisplayNameAsync());&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("Window Bounds w x h: {0} x {1}", Window.Current.Bounds.Width, Window.Current.Bounds.Height);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("Current Orientation: {0}", DisplayProperties.CurrentOrientation);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("Native Orientation: {0}", DisplayProperties.NativeOrientation);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("Logical DPI: {0}", DisplayProperties.LogicalDpi);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("Resolution Scale: {0}", DisplayProperties.ResolutionScale);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("Is Stereo Enabled: {0}", DisplayProperties.StereoEnabled);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("Supports Keyboard: {0}", IsKeyboardPresent());&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("Supports Mouse: {0}", IsMousePresent());&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("Supports Touch (contacts): {0} ({1})", IsTouchPresent(), new TouchCapabilities().Contacts);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("Is Network Available: {0}", NetworkInterface.GetIsNetworkAvailable());&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("Is Internet Connection Available: {0}", NetworkInformation.GetInternetConnectionProfile() != null);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("Network Host Names: ");&lt;br /&gt;   foreach (var hostName in NetworkInformation.GetHostNames())&lt;br /&gt;   {&lt;br /&gt;      builder.AppendFormat("{0} ({1}), ", hostName.DisplayName, hostName.Type);&lt;br /&gt;   }&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("Current Memory Usage: {0:f3} MB", GC.GetTotalMemory(false) / 1024f / 1024f);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("App Temp  Folder: {0}", ApplicationData.Current.TemporaryFolder.Path);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("App Local Folder: {0}", ApplicationData.Current.LocalFolder.Path);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendFormat("App Roam  Folder: {0}", ApplicationData.Current.RoamingFolder.Path);&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;   builder.AppendLine();&lt;br /&gt;&lt;br /&gt;   if (shouldDumpCompleteDeviceInfos)&lt;br /&gt;   {&lt;br /&gt;      var devInfos = await DeviceInformation.FindAllAsync();&lt;br /&gt;      builder.AppendLine();&lt;br /&gt;      builder.AppendLine("Complete Device Infos:");&lt;br /&gt;      foreach (var devInfo in devInfos)&lt;br /&gt;      {&lt;br /&gt;         builder.AppendFormat("Name: {0} Id: {1} - Properties: ", devInfo.Name, devInfo.Id);&lt;br /&gt;         foreach (var pair in devInfo.Properties)&lt;br /&gt;         {&lt;br /&gt;            builder.AppendFormat("{0} = {1}, ", pair.Key, pair.Value);&lt;br /&gt;         }&lt;br /&gt;         builder.AppendLine();&lt;br /&gt;      }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   return builder.ToString();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static bool IsTouchPresent()&lt;br /&gt;{&lt;br /&gt; return new TouchCapabilities().TouchPresent == 1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static bool IsMousePresent()&lt;br /&gt;{&lt;br /&gt; return new MouseCapabilities().MousePresent == 1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static bool IsKeyboardPresent()&lt;br /&gt;{&lt;br /&gt; return new KeyboardCapabilities().KeyboardPresent == 1;&lt;br /&gt;}&lt;br /&gt;&lt;/string&gt;&lt;/string&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;On my system it provides the following info (anonymized):  &lt;br /&gt;&lt;pre&gt;***** System Infos *****&lt;br /&gt;&lt;br /&gt;DEBUG&lt;br /&gt;&lt;br /&gt;Time: Sun, 28 Oct 2012 07:51:11 GMT&lt;br /&gt;App Name: MyApp&lt;br /&gt;App Version: 1.0.0.5&lt;br /&gt;App Publisher: CN=A8E2F0B1-4749-48AE-AE18-C7FFB5B30272&lt;br /&gt;Supported Package Architecture: Neutral&lt;br /&gt;Installed Location: D:\Development\MyApp\bin\Debug\AppX&lt;br /&gt;Store App Id: 00000000-0000-0000-0000-000000000000&lt;br /&gt;Culture: en-US&lt;br /&gt;OS: WINDOWS&lt;br /&gt;System Manufacturer: Dell Inc.&lt;br /&gt;System Product Name: Precision M6600&lt;br /&gt;System Sku: &lt;br /&gt;System Name: MYLAPTOP&lt;br /&gt;System ID: 18a2e8c6-cc7d-8546-1e9e-56a12ffb32fd&lt;br /&gt;Hardware ID: 03-00-D2-41-03-00-AA-72-08-00-EF-AD-05-AA-B6-4F-06-00-01-01-04-00-31-1B-04-00-0C-48-04-00-D2-55-04-00-D3-66-01-00-0E-D6-02-00-E4-7F-09-00-56-47&lt;br /&gt;User Display Name: Rene Schulte&lt;br /&gt;Window Bounds w x h: 1920 x 1080&lt;br /&gt;Current Orientation: Landscape&lt;br /&gt;Native Orientation: Landscape&lt;br /&gt;Logical DPI: 96&lt;br /&gt;Resolution Scale: Scale100Percent&lt;br /&gt;Is Stereo Enabled: False&lt;br /&gt;Supports Keyboard: True&lt;br /&gt;Supports Mouse: True&lt;br /&gt;Supports Touch (contacts): False (0)&lt;br /&gt;Is Network Available: True&lt;br /&gt;Is Internet Connection Available: True&lt;br /&gt;Network Host Names: mylaptop (DomainName), mylaptop.local (DomainName), 169.254.85.85 (Ipv4), 192.168.2.148 (Ipv4), &lt;br /&gt;Current Memory Usage: 0.451 MB&lt;br /&gt;App Temp  Folder: C:\Users\Rene\AppData\Local\Packages\MyApp\TempState&lt;br /&gt;App Local Folder: C:\Users\Rene\AppData\Local\Packages\MyApp\LocalState&lt;br /&gt;App Roam  Folder: C:\Users\Rene\AppData\Local\Packages\MyApp\RoamingState&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;If you know more system information Windows 8 APIs that listing is missing, please add a comment. &lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/HceZnNI6Xwg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/185538704734259853/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2012/10/know-your-users-windows-8-store-app.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/185538704734259853" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/185538704734259853" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/HceZnNI6Xwg/know-your-users-windows-8-store-app.html" title="Know Your Users - Windows 8 Store App System Info" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-3kgi14MXqlU/UIzqs0GUIYI/AAAAAAAAAbU/s6_B6e6Ia9k/s72-c/win8devices.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2012/10/know-your-users-windows-8-store-app.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-7633721092378091927</id><published>2012-08-29T11:45:00.000+02:00</published><updated>2012-08-29T11:45:14.404+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="WriteableBitmapEx" /><category scheme="http://www.blogger.com/atom/ns#" term="metro" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="windows 8" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><category scheme="http://www.blogger.com/atom/ns#" term="Computer graphics" /><category scheme="http://www.blogger.com/atom/ns#" term="WinRT" /><category scheme="http://www.blogger.com/atom/ns#" term="wpf" /><category scheme="http://www.blogger.com/atom/ns#" term="windows store" /><category scheme="http://www.blogger.com/atom/ns#" term="Wp7Dev" /><category scheme="http://www.blogger.com/atom/ns#" term="xaml" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="wpdev" /><category scheme="http://www.blogger.com/atom/ns#" term="WriteableBitmap" /><category scheme="http://www.blogger.com/atom/ns#" term="Win8" /><title type="text">Update WriteableBitmapEx for WinRT RTM, WPF, Windows Phone and Silverlight</title><content type="html">&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-XZ6szsJIabU/TRyM653SPtI/AAAAAAAAAPs/FQyB6v08SoA/s1600/wbx_announcement.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-XZ6szsJIabU/TRyM653SPtI/AAAAAAAAAPs/FQyB6v08SoA/s1600/wbx_announcement.png" /&gt;&lt;/a&gt;&lt;/div&gt;The RTM version of Windows 8 is now available and with that&amp;nbsp;&lt;a href="http://writeablebitmapex.codeplex.com/"&gt;WriteableBitmapEx&lt;/a&gt;&amp;nbsp;was updated too.&amp;nbsp;WriteableBitmapEx&amp;nbsp;is now available&amp;nbsp;for 4 platforms: WPF, Silverlight, Silverlight for Windows Phone and Windows Store Style WinRT .NET.&lt;br /&gt;&lt;b&gt;You can download the&amp;nbsp;binaries&amp;nbsp;&lt;a href="http://writeablebitmapex.codeplex.com/releases/view/39577"&gt;here&lt;/a&gt;&amp;nbsp;or via the&amp;nbsp;&lt;a href="http://nuget.org/List/Packages/WriteableBitmapEx"&gt;NuGet package&lt;/a&gt;.&amp;nbsp;&lt;/b&gt;The&lt;b&gt;&amp;nbsp;&lt;/b&gt;packages contain the WriteableBitmapEx binaries. As usual all samples and the source code can be found in the&amp;nbsp;&lt;a href="http://writeablebitmapex.codeplex.com/SourceControl/list/changesets"&gt;repository&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Since the last WinRT release preview version, a couple of bugs were fixed and a new FromStrean method was added which loads an image stream into a WriteableBitmap. The project was also updated for the&amp;nbsp;Windows 8 RTM version.&amp;nbsp;Please read&amp;nbsp;&lt;a href="http://kodierer.blogspot.de/2012/05/one-bitmap-to-rule-them-all.html"&gt;this blog post&lt;/a&gt;&amp;nbsp;for more details about the WinRT version.&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/1BqZy7aov3Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/7633721092378091927/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2012/08/update-writeablebitmapex-for-winrt-rtm.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/7633721092378091927" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/7633721092378091927" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/1BqZy7aov3Q/update-writeablebitmapex-for-winrt-rtm.html" title="Update WriteableBitmapEx for WinRT RTM, WPF, Windows Phone and Silverlight" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-XZ6szsJIabU/TRyM653SPtI/AAAAAAAAAPs/FQyB6v08SoA/s72-c/wbx_announcement.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2012/08/update-writeablebitmapex-for-winrt-rtm.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-1162491203021778804</id><published>2012-06-19T17:09:00.001+02:00</published><updated>2012-06-19T17:44:19.031+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="identity mine" /><category scheme="http://www.blogger.com/atom/ns#" term="personal" /><category scheme="http://www.blogger.com/atom/ns#" term="work" /><title type="text">Moving on</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-up6D51rzZ20/T97fqMXUoII/AAAAAAAAAaM/F-jUF24iyXY/s1600/ipp.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-up6D51rzZ20/T97fqMXUoII/AAAAAAAAAaM/F-jUF24iyXY/s1600/ipp.png" /&gt;&lt;/a&gt;&lt;/div&gt;Today was my last day at &lt;a href="http://www.schleupen.de/"&gt;Schleupen AG&lt;/a&gt;. I worked there for 5 years as an enterprise developer mainly on back end and algorithmic topics, but also on the front end with .NET, Silverlight and more. We developed some really nice things there and I'm esp. proud of the parallel data processing pipeline which even works with .NET 2.&lt;br /&gt;My co-workers were a great bunch of people, some became my friends and even the godfather of my youngest daughter and I became a godfather too. I thank them all for what I've learned and the great time we had. I wish them nothing less than the best for their future.&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: white;"&gt;I started at Schleupen AG right after my studies and my diploma thesis "Parallelization and Optimization of an OpenGL CAD / CAM Application". I was always a computer graphics&amp;nbsp;aficionado and passionate about physical simulation, image processing, computer vision, real-time computer graphics in general and&amp;nbsp;interactive&amp;nbsp;UIs with a great UX. Just for fun I started to work on some &lt;/span&gt;&lt;a href="http://rene-schulte.info/" style="background-color: white;"&gt;side projects&lt;/a&gt;&lt;span style="background-color: white;"&gt;,&lt;/span&gt;&lt;span style="background-color: white;"&gt;&amp;nbsp;like &lt;/span&gt;&lt;a href="https://vimeo.com/4391370" style="background-color: white;"&gt;this open source OpenGL&amp;nbsp;fluid simulation&lt;/a&gt;&lt;span style="background-color: white;"&gt; in 2007&lt;/span&gt;&lt;span style="background-color: white;"&gt;, created a few &lt;/span&gt;&lt;a href="http://www.codeplex.com/site/users/view/teichgraf" style="background-color: white;"&gt;open source libraries&lt;/a&gt;&lt;span style="background-color: white;"&gt;&amp;nbsp;and also developed&amp;nbsp;quite popular &amp;nbsp;Windows Phone apps such as &lt;/span&gt;&lt;a href="http://bit.ly/PicturesLab" style="background-color: white;"&gt;Pictures Lab&lt;/a&gt;&lt;span style="background-color: white;"&gt;, &lt;/span&gt;&lt;a href="http://windowsphone.com/s?appid=2ccff48e-f60d-45a9-b353-358760f2ff77" style="background-color: white;"&gt;Funny Faces&lt;/a&gt;&lt;span style="background-color: white;"&gt;, &lt;/span&gt;&lt;a href="http://windowsphone.com/s?appid=da4c75d6-df50-e011-854c-00237de2db9e" style="background-color: white;"&gt;Helium Voice&lt;/a&gt;&lt;span style="background-color: white;"&gt;, &lt;/span&gt;&lt;a href="http://windowsphone.com/s?appid=706e2c02-b1ae-4836-aa04-70bc7a0eaf7d" style="background-color: white;"&gt;Cloud Recorder&lt;/a&gt;&lt;span style="background-color: white;"&gt; and more.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It's an&amp;nbsp;exciting&amp;nbsp;time to be a developer with&amp;nbsp;so&amp;nbsp;much things happening in this industry at the moment. Microsoft's own &lt;a href="http://www.microsoft.com/surface"&gt;Surface&lt;/a&gt;&amp;nbsp;tablets is just one piece we as software developers can leverage to shape the future. For me it's good fun to use these great new technologies like Windows Phone, Windows 8, WinRT, .NET, DirectX, XBox, Kinect, etc. to create nice&amp;nbsp;experiences and I love to work on this all the time. &lt;br /&gt;A&amp;nbsp;&lt;span style="background-color: white;"&gt;few months ago I got an offer from&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.identitymine.com/" style="background-color: white;"&gt;IdentityMine&lt;/a&gt;&amp;nbsp;and if you&lt;span style="background-color: white;"&gt;&amp;nbsp;know their work, you can imagine that it was a no-brainer to accept &lt;/span&gt;&lt;span style="background-color: white;"&gt;this nice offer&lt;/span&gt;&lt;span style="background-color: white;"&gt;&amp;nbsp;they made me&lt;/span&gt;&lt;span style="background-color: white;"&gt;.&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white;"&gt;I'm really looking forward to work with state of the art technologies on exciting projects with experts like &lt;/span&gt;&lt;a href="http://www.galasoft.ch/" style="background-color: white;"&gt;Laurent Bugnion&lt;/a&gt;&lt;span style="background-color: white;"&gt;&amp;nbsp;and more great people&lt;/span&gt;&lt;span style="background-color: white;"&gt;. Another nice aspect of my new gig: I will work from my home office and will be closer to my 3 lovely daughters and wife. I will also be here during the last phase of my wife's&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white;"&gt;pregnancy and can hopefully support her better&lt;/span&gt;&lt;span style="background-color: white;"&gt;. And yes, we're &lt;a href="https://twitter.com/rschu/status/215047026273030144"&gt;expecting our fourth child&lt;/a&gt; in September. :-)&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white;"&gt;Now I will enjoy a couple of days off with my family until I start my new job as Senior Interactive Developer at&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.identitymine.com/" style="background-color: white;"&gt;IdentityMine&lt;/a&gt;&lt;span style="background-color: white;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white;"&gt;on July 2nd.&lt;/span&gt;&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/Xtf8Sc_ZDG0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/1162491203021778804/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2012/06/moving-on.html#comment-form" title="10 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/1162491203021778804" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/1162491203021778804" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/Xtf8Sc_ZDG0/moving-on.html" title="Moving on" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-up6D51rzZ20/T97fqMXUoII/AAAAAAAAAaM/F-jUF24iyXY/s72-c/ipp.png" height="72" width="72" /><thr:total>10</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2012/06/moving-on.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-3537100918152009562</id><published>2012-06-14T17:13:00.000+02:00</published><updated>2012-06-14T17:13:04.845+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="WriteableBitmapEx" /><category scheme="http://www.blogger.com/atom/ns#" term="metro" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="windows 8" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><category scheme="http://www.blogger.com/atom/ns#" term="Computer graphics" /><category scheme="http://www.blogger.com/atom/ns#" term="WinRT" /><category scheme="http://www.blogger.com/atom/ns#" term="wpf" /><category scheme="http://www.blogger.com/atom/ns#" term="Wp7Dev" /><category scheme="http://www.blogger.com/atom/ns#" term="xaml" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="wpdev" /><category scheme="http://www.blogger.com/atom/ns#" term="WriteableBitmap" /><category scheme="http://www.blogger.com/atom/ns#" term="Win8" /><title type="text">It's Alive! - WriteableBitmapEx 1.0 for WinRT Metro Style, WPF, Windows Phone and Silverlight</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-XZ6szsJIabU/TRyM653SPtI/AAAAAAAAAPs/FQyB6v08SoA/s1600/wbx_announcement.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-XZ6szsJIabU/TRyM653SPtI/AAAAAAAAAPs/FQyB6v08SoA/s1600/wbx_announcement.png" /&gt;&lt;/a&gt;&lt;/div&gt;After a few preview versions, I'm happy to announce&amp;nbsp;that&amp;nbsp;the final version of&amp;nbsp;&lt;a href="http://writeablebitmapex.codeplex.com/"&gt;WriteableBitmapEx&lt;/a&gt;&amp;nbsp;1.0 is now available.&lt;br /&gt;A couple of weeks ago we added official&amp;nbsp;&lt;a href="http://kodierer.blogspot.de/2011/12/writeablebitmapex-10-coming-soon-test.html"&gt;WPF support&lt;/a&gt;&amp;nbsp;and &lt;a href="http://kodierer.blogspot.de/2012/05/one-bitmap-to-rule-them-all.html"&gt;WinRT Metro Style support&lt;/a&gt;. With that&amp;nbsp;&lt;a href="http://writeablebitmapex.codeplex.com/"&gt;WriteableBitmapEx&lt;/a&gt;&amp;nbsp;is now available&amp;nbsp;for 4 platforms: WPF, Silverlight, Silverlight for Windows Phone and Metro Style WinRT .NET.&lt;br /&gt;&lt;b&gt;You can download the&amp;nbsp;binaries &lt;a href="http://writeablebitmapex.codeplex.com/releases/view/39577"&gt;here&lt;/a&gt;&amp;nbsp;or via the&amp;nbsp;&lt;a href="http://nuget.org/List/Packages/WriteableBitmapEx"&gt;NuGet package&lt;/a&gt;. &lt;/b&gt;The&lt;b&gt;&amp;nbsp;&lt;/b&gt;packages contain the WriteableBitmapEx binaries. All samples and the source code can be found in the&amp;nbsp;&lt;a href="http://writeablebitmapex.codeplex.com/SourceControl/list/changesets"&gt;repository&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Since the last WinRT preview version, a new WinRT sample was added, a couple of bugs were fixed and a new FromStrean method was added which loads an image stream into a WriteableBitmap. The project was also updated for the&amp;nbsp;&lt;a href="http://windows.microsoft.com/en-US/windows-8/release-preview"&gt;Windows 8 Release Preview&lt;/a&gt;.&amp;nbsp;Please read&amp;nbsp;&lt;a href="http://kodierer.blogspot.de/2012/05/one-bitmap-to-rule-them-all.html"&gt;this blog post&lt;/a&gt;&amp;nbsp;for more details (about the WinRT version).&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/5c0nIBZgw8w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/3537100918152009562/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2012/06/its-alive-writeablebitmapex-10-for.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/3537100918152009562" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/3537100918152009562" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/5c0nIBZgw8w/its-alive-writeablebitmapex-10-for.html" title="It's Alive! - WriteableBitmapEx 1.0 for WinRT Metro Style, WPF, Windows Phone and Silverlight" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-XZ6szsJIabU/TRyM653SPtI/AAAAAAAAAPs/FQyB6v08SoA/s72-c/wbx_announcement.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2012/06/its-alive-writeablebitmapex-10-for.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-2501743908932264561</id><published>2012-05-07T19:51:00.001+02:00</published><updated>2012-05-07T19:56:47.843+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="WriteableBitmapEx" /><category scheme="http://www.blogger.com/atom/ns#" term="metro" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="windows 8" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><category scheme="http://www.blogger.com/atom/ns#" term="Computer graphics" /><category scheme="http://www.blogger.com/atom/ns#" term="WinRT" /><category scheme="http://www.blogger.com/atom/ns#" term="wpf" /><category scheme="http://www.blogger.com/atom/ns#" term="Wp7Dev" /><category scheme="http://www.blogger.com/atom/ns#" term="xaml" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="wpdev" /><category scheme="http://www.blogger.com/atom/ns#" term="WriteableBitmap" /><category scheme="http://www.blogger.com/atom/ns#" term="Win8" /><title type="text">One Bitmap to Rule Them All - WriteableBitmapEx for WinRT Metro Style</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ZGok4PyhBQ0/TqrwNmH-DII/AAAAAAAAAVg/WJw3hVEl0h8/s1600/wbx_rotated.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-ZGok4PyhBQ0/TqrwNmH-DII/AAAAAAAAAVg/WJw3hVEl0h8/s1600/wbx_rotated.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;A couple of weeks ago we &lt;a href="http://kodierer.blogspot.de/2011/12/writeablebitmapex-10-coming-soon-test.html"&gt;added official WPF suppor&lt;/a&gt;t to&amp;nbsp; &lt;a href="http://writeablebitmapex.codeplex.com/"&gt;WriteableBitmapEx&lt;/a&gt;. Today I'm happy to announce that &lt;a href="http://writeablebitmapex.codeplex.com/"&gt;WriteableBitmapEx&lt;/a&gt;&amp;nbsp;now also officially supports Windows 8 Metro Stlye WinRT .NET XAML. With that WriteableBitmapEx is now available&amp;nbsp;for 4 platforms: WPF, Silverlight, Silverlight for Windows Phone and Metro Style WinRT .NET.&lt;br /&gt;Although &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/dd370990(v=vs.85).aspx"&gt;Direct2D&lt;/a&gt; is the best solution for fast 2D graphics with&amp;nbsp;Windows 8 Metro Style, I think&amp;nbsp;there are scenarios where the WriteableBitmapEx could be helpful, esp. when using C# with XAML. I also know that some devs were waiting for this to port their Windows Phone apps to Windows 8 Metro Style.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;WinRT Differences&lt;/b&gt;&lt;br /&gt;Unlike the Silverlight &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.writeablebitmap(v=vs.95).aspx"&gt;WriteableBitmap&lt;/a&gt;, the Metro Style &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.ui.xaml.media.imaging.writeablebitmap"&gt;WriteableBitmap&lt;/a&gt;&amp;nbsp;doesn't&amp;nbsp;provide the pixel data directly. Its&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.ui.xaml.media.imaging.writeablebitmap.pixelbuffer"&gt;IBuffer PixelBuffer&lt;/a&gt; property doesn't have an interface&amp;nbsp;to get the color information. Fortunately there are a few &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/39b3c702-caed-47e4-b7d3-b51d75cbca9b"&gt;C# extension methods available&lt;/a&gt; which provide the pixel data as byte array or stream in the &lt;a href="http://en.wikipedia.org/wiki/RGBA_color_space"&gt;BGRA pixel format&lt;/a&gt;.&amp;nbsp;Yes, BGRA and not like all the other platforms supported by WriteableBitmapEx as ARGB. The BGRA format is &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/dd756766(v=vs.85).aspx#supported_formats_for_dxgi_surface_render_target"&gt;mainly used by Direct2D&lt;/a&gt;, which might be the reason for this hidden, but important difference of the&amp;nbsp;Metro Style&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.ui.xaml.media.imaging.writeablebitmap"&gt;WriteableBitmap&lt;/a&gt;.&lt;br /&gt;The&amp;nbsp;WriteableBitmapEx algorithms are written for the ARGB&amp;nbsp;pixel format. Fortunately I was able to keep the details away from the library user by leveraging the BitmapContext concept we&amp;nbsp;introduced&amp;nbsp;with the WPF support. This approach makes it possible to share almost the same code for all 4 platforms without being cluttered with #if directives all over place.&amp;nbsp;&amp;nbsp;Actually&amp;nbsp;the most significant WinRT adaptation inside the WriteableBitmapEx methods was done in the FromContent method,&amp;nbsp;which&amp;nbsp;loads an image from the app content and provides it as WriteableBitmap. See &lt;a href="http://stackoverflow.com/questions/10197170/in-winrt-how-do-i-load-an-image-and-then-wait-only-as-long-as-is-needed-for-it/10464949#10464949"&gt;this StackOverflow question I answered&lt;/a&gt;&amp;nbsp;if you're interested in the details.&lt;br /&gt;Nothing comes for free, but if the BitmapContext is used the right way,&amp;nbsp;the performance hit won't be that much thanks to an internal reference counting WriteableBitmapEx'&amp;nbsp;BitmapContext&amp;nbsp;uses. No worries, you don't have to change all your&amp;nbsp;WriteableBitmapEx&amp;nbsp;calls, just wrap your calls in a simple using(writeableBmp.GetBitmapContext()) and you will only have one buffer conversion instead of one for each draw call.&lt;br /&gt;It's really simple to use:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: c-sharp;"&gt;private void Draw()&lt;br /&gt;{&lt;br /&gt;   // Wrap updates in a GetContext call, to prevent invalidation overhead&lt;br /&gt;   using (writeableBmp.GetBitmapContext())&lt;br /&gt;   {&lt;br /&gt;      writeableBmp.Clear();&lt;br /&gt;      DrawPoints();&lt;br /&gt;      DrawBeziers();&lt;br /&gt;  &lt;br /&gt;   } // Invalidates on exit of using block&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void DrawPoints()&lt;br /&gt;{&lt;br /&gt;   foreach (var p in points)&lt;br /&gt;   {&lt;br /&gt;      DrawPoint(p, Colors.Green, PointVisualSizeHalf);&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void DrawPoint(ControlPoint p, Color color, int halfSizeOfPoint)&lt;br /&gt;{&lt;br /&gt;   var x1 = p.X - halfSizeOfPoint;&lt;br /&gt;   var y1 = p.Y - halfSizeOfPoint;&lt;br /&gt;   var x2 = p.X + halfSizeOfPoint;&lt;br /&gt;   var y2 = p.Y + halfSizeOfPoint;&lt;br /&gt;   writeableBmp.DrawRectangle(x1, y1, x2, y2, color);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void DrawBeziers()&lt;br /&gt;{&lt;br /&gt;   if (points.Count &amp;gt; 3)&lt;br /&gt;   {&lt;br /&gt;      writeableBmp.DrawBeziers(GetPointArray(), Colors.Yellow);&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-vCXNDnjuAmw/T6ZFFMHvv5I/AAAAAAAAAZo/ycWFOgLti40/s1600/wbx_winrt_screenshot.PNG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/-vCXNDnjuAmw/T6ZFFMHvv5I/AAAAAAAAAZo/ycWFOgLti40/s640/wbx_winrt_screenshot.PNG" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Screenshot WinRT Metro Style sample running in the simulator&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;All samples were tested with the new version, but due to the refactoring more testing is needed. &lt;b&gt;Please test this version with your projects and &lt;a href="http://writeablebitmapex.codeplex.com/workitem/list/basic"&gt;report the bugs you encounter&lt;/a&gt;. You can download the&amp;nbsp;binaries &lt;a href="http://writeablebitmapex.codeplex.com/releases/view/39577"&gt;here&lt;/a&gt;. &lt;/b&gt;Note that this package only contains the WriteableBitmapEx binaries for Silverlight, Windows Phone, WinRT Metro Style .NET and WPF. All the samples&amp;nbsp;can be found in the&amp;nbsp;&lt;a href="http://writeablebitmapex.codeplex.com/SourceControl/list/changesets"&gt;source code repository&lt;/a&gt;&amp;nbsp;in the branch "WBX_1.0_BitmapContext". If all goes well, this branch will become the trunk and the 1.0 RTM in a few weeks.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;WinMD / Windows Runtime Component&lt;/b&gt;&lt;br /&gt;There's also a &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh441572(v=vs.110).aspx"&gt;WinMD&lt;/a&gt; version available which makes it possible to consume the WriteableBitmapEx library from all the WinRT Metro Style projections, although only C# and C++ XAML make actually sense.&lt;br /&gt;I had to move some parts and leave some&amp;nbsp;functionality&amp;nbsp;like the ForEach out, but it contains 99% of the library's features. Unfortunately the C++ sample I created crashes when the WriteableBitmapExWinMD library is loaded. So for now this WinMD version can be found in a separate branch "WBX_1.0_WinMD" in the&amp;nbsp;&lt;a href="http://writeablebitmapex.codeplex.com/SourceControl/list/changesets"&gt;source code repository&lt;/a&gt;&amp;nbsp;and it won't be part of the trunk and release until it works with the sample. I'm a bit running out of time and don't know where to look for, since it seems all is wired up correctly and compiles fine. If you are a WinMD wizard and have a few minutes, I'd appreciate if you could look into the WinMD version.&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/RIjg9Z_nxbU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/2501743908932264561/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2012/05/one-bitmap-to-rule-them-all.html#comment-form" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/2501743908932264561" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/2501743908932264561" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/RIjg9Z_nxbU/one-bitmap-to-rule-them-all.html" title="One Bitmap to Rule Them All - WriteableBitmapEx for WinRT Metro Style" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-ZGok4PyhBQ0/TqrwNmH-DII/AAAAAAAAAVg/WJw3hVEl0h8/s72-c/wbx_rotated.jpg" height="72" width="72" /><thr:total>6</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2012/05/one-bitmap-to-rule-them-all.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-5940949035893755287</id><published>2012-01-13T20:43:00.003+01:00</published><updated>2012-01-15T10:34:20.479+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PicLab" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="wp7" /><category scheme="http://www.blogger.com/atom/ns#" term="Mobile" /><category scheme="http://www.blogger.com/atom/ns#" term="marketing" /><category scheme="http://www.blogger.com/atom/ns#" term="wpdev" /><title type="text">Breakdown of Windows Phone App Download Statistics</title><content type="html">&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-mlLMcRiI-0k/TxBKSKOwtQI/AAAAAAAAAWo/WG91wk20c1o/s1600/noun_project_815.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-mlLMcRiI-0k/TxBKSKOwtQI/AAAAAAAAAWo/WG91wk20c1o/s1600/noun_project_815.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;i&gt;&lt;a href="http://thenounproject.com/noun/line-graph/#icon-No815"&gt;Line Graph&lt;/a&gt; by Scott Lewis, Noun&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;In this blog post I want to share the download graph of my quite successful Windows Phone app&amp;nbsp;&lt;a href="http://bit.ly/PicLab"&gt;Pictures Lab&lt;/a&gt;&amp;nbsp;and my conclusions.&amp;nbsp;Some of you might have seen a similar graph already on &lt;a href="https://twitter.com/#!/rschu/status/157544136831008768"&gt;Twitter&lt;/a&gt; or on &lt;a href="https://www.facebook.com/photo.php?fbid=2389884757497"&gt;Facebook&lt;/a&gt;, but I thought an update and a bit more explanation might probably make sense.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The graph below shows the download statistics of my &lt;a href="http://bit.ly/PicLab"&gt;Pictures Lab app&lt;/a&gt;&amp;nbsp;during the last 9 months. The green line represents the daily downloads and the orange are the accumulated downloads. I blurred the numbers at the scales, since I don't release the download number for various reasons.&amp;nbsp;Please note, Pictures Lab offers a trial mode which means users can try the app for free. Therefore the download numbers&amp;nbsp;aren't&amp;nbsp;equal to the number of sold licenses! Although the app has a pretty good &lt;a href="http://en.wikipedia.org/wiki/Conversion_rate"&gt;conversion rate&lt;/a&gt; from trial-to-paid of ~32% worldwide average and in December it even was 97% in&amp;nbsp;Norway! I noticed that all the Scandinavian countries seem to have a great conversion rate in general. Worst seems to be Hong Kong, but that's a story for a different blog post. Just to be clear, Pictures Lab&amp;nbsp;provides me with a solid extra income each month and the trend is positive, but it's not enough to make a living out of that yet.&lt;br /&gt;The absolute download numbers actually don't matter that much for this blog post. The important part of the graph are the text labels I manually added. Those labels mark events I tracked and noted at that time and are&amp;nbsp;usually followed by a download peak.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-6VtUS6N37B0/TxKcs6DnpQI/AAAAAAAAAXY/-OSFHa9hdrs/s1600/PicturesLab_Downloads_9mo_labels.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="284" src="http://2.bp.blogspot.com/-6VtUS6N37B0/TxKcs6DnpQI/AAAAAAAAAXY/-OSFHa9hdrs/s640/PicturesLab_Downloads_9mo_labels.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Pictures Lab download graph from 04-01-2011 to 01-07-2012 (click on the image for the original size).&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;b&gt;My conclusions&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Steadily releasing updates with new&amp;nbsp;functionality&amp;nbsp;and being featured at the &lt;a href="http://kodierer.blogspot.com/2011/12/windows-phone-sites-around-world.html"&gt;Windows Phone sites&lt;/a&gt; has a big impact on the downloads. Keep in mind the major Pictures Lab updates were featured at least at 3-5 of the top Windows Phone sites.&lt;/li&gt;&lt;li&gt;Being featured at the Marketplace also has a significant&amp;nbsp;positive&amp;nbsp;impact on downloads. Of course this depends on how big the local Marketplace is.&amp;nbsp;Unfortunately does&amp;nbsp;the AppHub not provide the information when an app has been featured. There is the &lt;a href="http://monitor.distimo.com/"&gt;Distimo&lt;/a&gt; service which tracks that too, but that service needs your live id&amp;nbsp;credentials&amp;nbsp;and I won't give a 3rd party site my live id to store it in their database.&amp;nbsp;Fortunately some of my friends ping me when they see my apps being featured in their local marketplace. I think it's pretty much safe to say that all the graph peaks without a label nearby are&amp;nbsp;related&amp;nbsp;to a Marketplace feature. &amp;nbsp;&lt;/li&gt;&lt;li&gt;The base line increased not only after the 3.0, but also after the peak of the 4.0 update. The 4.0 update brought the multi-language support with 10 languages. The steady download jump after 4.0 is a pretty good&amp;nbsp;indication that localization can help to increase downloads.&lt;/li&gt;&lt;li&gt;The price drop to $0.99 was followed by the highest peak in the graph, but after that it went down pretty quickly. I think the price point is the hardest thing to get right and it largely varies for different kind of apps, so the above Pictures Lab pricing information shouldn't be generalized. &amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Of course Christmas, the holidays and New Year also resulted in nice peaks. Customers have time to browse the marketplace or just want to fill up their brand new Windows Phones with some apps.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;What about the Windows Phone 7.5?&lt;/b&gt;&lt;br /&gt;The first Windows Phone 7.5 (previously known as Mango) devices and Nokia hit the market in October and November 2011. This fact also needs to be considered when interpreting the graph. Although from looking at the statistics of my other apps I see that Windows Phone 7.5 didn't have such a huge impact like the updates had. The downloads definitely increased due to the Windows Phone 7.5 launch, but the tracked events align very well with the peaks in the graph and the increase of the base line after.&lt;br /&gt;Let me try to&amp;nbsp;clarify&amp;nbsp;this and my conclusion #3 with the graphs of my successful&amp;nbsp;&lt;a href="http://windowsphone.com/s?appid=da4c75d6-df50-e011-854c-00237de2db9e"&gt;Helium Voice Free app&lt;/a&gt; and my not so successful &lt;a href="ttp://bit.ly/BenchmarkFree"&gt;Benchmark Free app&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://windowsphone.com/s?appid=da4c75d6-df50-e011-854c-00237de2db9e"&gt;Helium Voice Free&lt;/a&gt;&amp;nbsp;got a nice update in November, but I didn't inform the Windows Phone sites, so there are no peaks in the graph. You can see that the release of Windows Phone 7.5 slightly increased the downloads and the downward trend turned into an upward trend.&lt;br /&gt;&lt;br /&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-CXK3-SB-a64/TxKc3EY6bGI/AAAAAAAAAXg/rXV9TTDnS5k/s1600/HeliumVoiceFree_Downloads_9mo.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="278" src="http://3.bp.blogspot.com/-CXK3-SB-a64/TxKc3EY6bGI/AAAAAAAAAXg/rXV9TTDnS5k/s640/HeliumVoiceFree_Downloads_9mo.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Helium Voice&amp;nbsp;Free&amp;nbsp;graph from 04-01-2011 to 01-07-2012 (click on the image for the original size to see numbers).&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the&amp;nbsp;&lt;a href="ttp://bit.ly/BenchmarkFree"&gt;Benchmark Free&lt;/a&gt;&amp;nbsp;download graph there's also&amp;nbsp;this small increase of the average downloads around the Windows Phone 7.5 device launch, but it's not as much as after the updates of Pictures Lab.&lt;br /&gt;&lt;br /&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-sO27bTUm8R4/TxKdEUXmVuI/AAAAAAAAAXo/g5o98BdpBcs/s1600/BenchmarkFree_Downloads_9mo.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="284" src="http://2.bp.blogspot.com/-sO27bTUm8R4/TxKdEUXmVuI/AAAAAAAAAXo/g5o98BdpBcs/s640/BenchmarkFree_Downloads_9mo.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Benchmark Free&amp;nbsp;graph from 04-01-2011 to 01-07-2012 (click on the image for the original size).&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Considering all that information, I think this means the Windows Phone 7.5 launch of course raised the downloads base line, but the Pictures Lab updates had a bigger impact on the downloads and it's not only the Windows Phone 7.5 launch which raised the average downloads of Pictures Lab.&lt;br /&gt;Keep in mind that such a statistical analysis&amp;nbsp;isn't bullet-proof at all, esp. when there's not all the information available like the date of all marketplace features and more. Please also note not all apps are the same and things that work for&amp;nbsp;&lt;a href="http://bit.ly/PicLab"&gt;Pictures Lab&lt;/a&gt;&amp;nbsp;or&amp;nbsp;&lt;a href="http://windowsphone.com/s?appid=da4c75d6-df50-e011-854c-00237de2db9e"&gt;Helium Voice Free&lt;/a&gt;&amp;nbsp;don't&amp;nbsp;necessarily&amp;nbsp;need to be valid for other apps.&lt;br /&gt;&lt;br /&gt;Makes sense?&lt;br /&gt;What are your conclusions?&lt;br /&gt;&lt;div&gt;What is your experience?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Thank you!&lt;/b&gt;&lt;/div&gt;I would like to thank all the users of the app, the great group of translators who helped me to translate&amp;nbsp;&lt;a href="http://bit.ly/PicLab"&gt;Pictures Lab&lt;/a&gt;, the beta testers and not at last all the great Windows Phone sites which keep us informed about all the things happening around Windows Phone and help us&amp;nbsp;developers&amp;nbsp;by informing the world about our apps. Keep it up!&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/ENZA9Jczou4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/5940949035893755287/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2012/01/breakdown-of-windows-phone-app-download.html#comment-form" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/5940949035893755287" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/5940949035893755287" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/ENZA9Jczou4/breakdown-of-windows-phone-app-download.html" title="Breakdown of Windows Phone App Download Statistics" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-mlLMcRiI-0k/TxBKSKOwtQI/AAAAAAAAAWo/WG91wk20c1o/s72-c/noun_project_815.png" height="72" width="72" /><thr:total>8</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2012/01/breakdown-of-windows-phone-app-download.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-83193819054056808</id><published>2012-01-05T21:30:00.000+01:00</published><updated>2012-01-05T21:36:37.709+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="Facebook" /><category scheme="http://www.blogger.com/atom/ns#" term="wp7" /><category scheme="http://www.blogger.com/atom/ns#" term="Wp7Dev" /><category scheme="http://www.blogger.com/atom/ns#" term="Mobile" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="wpdev" /><category scheme="http://www.blogger.com/atom/ns#" term="FB" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><title type="text">Let me out - Facebook Logout in a Windows Phone App</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-bGiT_3GA2Yo/TwX8DmPuKKI/AAAAAAAAAWQ/a02HIWo8G7k/s1600/fb_logout.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-bGiT_3GA2Yo/TwX8DmPuKKI/AAAAAAAAAWQ/a02HIWo8G7k/s1600/fb_logout.png" /&gt;&lt;/a&gt;&lt;/div&gt;A while ago I implemented the Facebook photo endpoint into my Windows Phone &lt;a href="http://bit.ly/PicLab"&gt;Pictures Lab app&lt;/a&gt;. The implementation of the login was quite straightforward thanks to OAuth 2.0. Only the logout was way harder than one might expect. This&amp;nbsp;post describes how to logout from Facebook using the Facebook API.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In my&amp;nbsp;&lt;a href="http://bit.ly/PicLab"&gt;Pictures Lab app&lt;/a&gt;&amp;nbsp;you can edit photos, make them look awesome and then save or share those with your friends at Twitter or Facebook.&amp;nbsp;The Windows Phone Mango API provides the&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.sharelinktask(v=vs.92).aspx"&gt;ShareLinkTask&lt;/a&gt;&amp;nbsp;and the&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.phone.tasks.sharestatustask(v=VS.92).aspx"&gt;ShareStatusTask&lt;/a&gt;&amp;nbsp;which can be used by an app to share an URL or text using the social services the user has connected the device to.&amp;nbsp;Unfortunately&amp;nbsp;there's no built-in SharePhotoTask to share a photo using the services the user has already authorized. That's why I had to implement it in a custom way where the user has to authorize again.&amp;nbsp;This&amp;nbsp;&lt;a href="http://buildmobile.com/facebook-in-a-windows-phone-7-app/"&gt;blog post&lt;/a&gt;&amp;nbsp;by my mate Nick Randolph describes very well how to login to Facebook from a Windows Phone app.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-xUZ3DAZDfPQ/TwYAiC1cyDI/AAAAAAAAAWc/Vnx0NhjNawI/s1600/logout.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-xUZ3DAZDfPQ/TwYAiC1cyDI/AAAAAAAAAWc/Vnx0NhjNawI/s320/logout.png" width="192" /&gt;&lt;/a&gt;&lt;/div&gt;For some situations it might make sense to allow the user to logout from within the app. One might think this can't be hard and in most cases it's pretty easy. Logging out from Twitter is very easy for example. You just have to start the authorization process again. However, logging out from Facebook is way harder since they store a cookie and the &lt;a href="http://msdn.microsoft.com/en-us/library/ff431812(v=vs.92).aspx"&gt;WebBrowser control&lt;/a&gt; doesn't provide a way to clear the cookies, so just starting the authorization process again doesn't work.&lt;br /&gt;One way to log out from Facebook uses a special Uri that contains a part of the access token which was queried during the app&amp;nbsp;authorization&amp;nbsp;process.&lt;br /&gt;&lt;br /&gt;Here's the snippet I use in Pictures Lab to split the access token to get the session key which is then used to build the custom Uri:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: c-sharp;"&gt;public Uri GetLogoutUri(FacebookCredentials credentials)&lt;br /&gt;{&lt;br /&gt;   var sessionkey = ExtractSessionKeyFromAccessToken(credentials.AccessToken);&lt;br /&gt;   var url = String.Format("http://facebook.com/logout.php?app_key={0}&amp;amp;session_key={1}&amp;amp;next={2}", EndpointData.FacebookAppId, sessionkey, EndpointData.FacebookLogoutCallbackUrl);&lt;br /&gt;   return new Uri(url);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private static string ExtractSessionKeyFromAccessToken(string accessToken)&lt;br /&gt;{&lt;br /&gt;   if (!String.IsNullOrEmpty(accessToken))&lt;br /&gt;   {&lt;br /&gt;      var parts = accessToken.Split('|');&lt;br /&gt;      if (parts.Length &amp;gt; 2)&lt;br /&gt;      { &lt;br /&gt;         return parts[1];&lt;br /&gt;      }&lt;br /&gt;   }&lt;br /&gt;   return String.Empty;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;That logout Uri is then used to navigate the WebBrowser control to it which then correctly triggers the log out process. &lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: c-sharp;"&gt;Browser.Navigate(FacebookService.GetLogoutUri(EndpointData.Settings.Facebook));&lt;/pre&gt;&lt;br /&gt;That's it. You just have to know their trick. Hope this helps.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/Pu5yoX2A_-8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/83193819054056808/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2012/01/let-me-out-facebook-logout-in-windows.html#comment-form" title="13 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/83193819054056808" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/83193819054056808" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/Pu5yoX2A_-8/let-me-out-facebook-logout-in-windows.html" title="Let me out - Facebook Logout in a Windows Phone App" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-bGiT_3GA2Yo/TwX8DmPuKKI/AAAAAAAAAWQ/a02HIWo8G7k/s72-c/fb_logout.png" height="72" width="72" /><thr:total>13</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2012/01/let-me-out-facebook-logout-in-windows.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-5823164122018556559</id><published>2012-01-05T20:25:00.003+01:00</published><updated>2012-01-05T21:49:19.816+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3D" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="Mango" /><category scheme="http://www.blogger.com/atom/ns#" term="wp7" /><category scheme="http://www.blogger.com/atom/ns#" term="HLSL" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight 5" /><category scheme="http://www.blogger.com/atom/ns#" term="Augmented Reality" /><category scheme="http://www.blogger.com/atom/ns#" term="Computer graphics" /><category scheme="http://www.blogger.com/atom/ns#" term="Shader" /><category scheme="http://www.blogger.com/atom/ns#" term="SLARToolkit" /><category scheme="http://www.blogger.com/atom/ns#" term="SL53D" /><category scheme="http://www.blogger.com/atom/ns#" term="Wp7Dev" /><category scheme="http://www.blogger.com/atom/ns#" term="Mobile" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="wpdev" /><title type="text">SLARToolkit Samples Updated</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-z-D_jBcDds0/TdqpOa1WT6I/AAAAAAAAAQ4/IMUor83BnKQ/s1600/Marker_SLAR_16x16segments_80width_192x192.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-z-D_jBcDds0/TdqpOa1WT6I/AAAAAAAAAQ4/IMUor83BnKQ/s1600/Marker_SLAR_16x16segments_80width_192x192.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;The samples of my open source Windows Phone and Silverlight Augmented Reality Toolkit were updated to the latest version of the WP 7.1 and Silverlight 5 SDKs.&lt;br /&gt;Please note the changed&amp;nbsp;security&amp;nbsp;model in Silverlight 5, which is a big bummer. My Silverlight MVP friend Morten wrote a few true words about it &lt;a href="http://sharpgis.net/post/2011/12/10/Why-Silverlight-5%E2%80%99s-3D-is-(almost)-useless.aspx"&gt;here&lt;/a&gt;. &lt;br /&gt;As usual you can find a list of the samples on the &lt;a href="http://slartoolkit.codeplex.com/"&gt;project site&lt;/a&gt; and also get the code there.&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/7iThaIgfPVg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/5823164122018556559/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2012/01/slartoolkit-samples-updated.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/5823164122018556559" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/5823164122018556559" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/7iThaIgfPVg/slartoolkit-samples-updated.html" title="SLARToolkit Samples Updated" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-z-D_jBcDds0/TdqpOa1WT6I/AAAAAAAAAQ4/IMUor83BnKQ/s72-c/Marker_SLAR_16x16segments_80width_192x192.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2012/01/slartoolkit-samples-updated.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-5785850367697535903</id><published>2011-12-20T20:37:00.000+01:00</published><updated>2012-05-06T11:30:26.848+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="WriteableBitmapEx" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="Computer graphics" /><category scheme="http://www.blogger.com/atom/ns#" term="wpf" /><category scheme="http://www.blogger.com/atom/ns#" term="Wp7Dev" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="wpdev" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><category scheme="http://www.blogger.com/atom/ns#" term="WriteableBitmap" /><title type="text">WriteableBitmapEx 1.0 Coming Soon, Test it Now!</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ZGok4PyhBQ0/TqrwNmH-DII/AAAAAAAAAVg/WJw3hVEl0h8/s1600/wbx_rotated.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-ZGok4PyhBQ0/TqrwNmH-DII/AAAAAAAAAVg/WJw3hVEl0h8/s1600/wbx_rotated.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;A new version of the &lt;a href="http://writeablebitmapex.codeplex.com/"&gt;WriteableBitmapEx open source library&lt;/a&gt;&amp;nbsp;has just been&amp;nbsp;&lt;a href="http://kodierer.blogspot.com/2011/10/writeablebitmapex-v0985-now-available.html"&gt;released&lt;/a&gt;, but that isn't the last release for this year. No,&amp;nbsp;&lt;a href="http://www.linkedin.com/profile/view?id=54694225"&gt;Andrew Burnett-Thompson&lt;/a&gt;&amp;nbsp;and I refactored the library to make it easier portable and we added full WPF support. Andrew did most of the work since he needed the current WriteableBitmapEx library for one of his WPF projects. As a result of the refactoring, WriteableBitmapEx will have maintained support for WPF starting with version 1.0.&lt;br /&gt;I'd have loved to add support for WinRT too,&amp;nbsp;but unfortunately it seems that WinRT only &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/39b3c702-caed-47e4-b7d3-b51d75cbca9b/"&gt;supports streamed reading / writing&lt;/a&gt; of the pixel buffer at the moment. I will wait until Microsoft ships the Windows 8 beta early next year and see what they have in there. Many WriteableBitmapEx algorithms need random buffer index access and I don't want to waste my time with massive memory copying now. Who knows what else comes in the beta and it might be better to use a whole different approach for immediate rendering with Windows 8 and WinRT.&lt;br /&gt;&lt;br /&gt;All samples were tested with the new version, but due to the massive refactoring more testing is needed. &lt;b&gt;Please test the beta version with your projects and report any bugs you find. You can download the&amp;nbsp;binaries &lt;a href="http://writeablebitmapex.codeplex.com/releases/view/39577"&gt;here&lt;/a&gt;. &lt;/b&gt;Note that this package only contains the WriteableBitmapEx binaries for Silverlight, Windows Phone and WPF. All the samples&amp;nbsp;can be found in the&amp;nbsp;&lt;a href="http://writeablebitmapex.codeplex.com/SourceControl/list/changesets"&gt;source code repository&lt;/a&gt;&amp;nbsp;in the branch "WBX_1.0_BitmapContext". If all goes well this branch will become the trunk in a couple of weeks.&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/NSDz7ZogpLw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/5785850367697535903/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2011/12/writeablebitmapex-10-coming-soon-test.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/5785850367697535903" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/5785850367697535903" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/NSDz7ZogpLw/writeablebitmapex-10-coming-soon-test.html" title="WriteableBitmapEx 1.0 Coming Soon, Test it Now!" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-ZGok4PyhBQ0/TqrwNmH-DII/AAAAAAAAAVg/WJw3hVEl0h8/s72-c/wbx_rotated.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2011/12/writeablebitmapex-10-coming-soon-test.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-129977615004712044</id><published>2011-12-05T20:52:00.002+01:00</published><updated>2011-12-14T19:56:29.342+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="WriteableBitmapEx" /><category scheme="http://www.blogger.com/atom/ns#" term="Coding4Fun" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><category scheme="http://www.blogger.com/atom/ns#" term="picfx" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><category scheme="http://www.blogger.com/atom/ns#" term="PicLab" /><category scheme="http://www.blogger.com/atom/ns#" term="Computer graphics" /><category scheme="http://www.blogger.com/atom/ns#" term="Mobile" /><category scheme="http://www.blogger.com/atom/ns#" term="Wp7Dev" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="wpdev" /><category scheme="http://www.blogger.com/atom/ns#" term="WriteableBitmap" /><title type="text">Windows Phone Sites Around the World</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-7CkTJ6sRsSM/Tt0hAM00XII/AAAAAAAAAVw/FJZLWJVDfpQ/s1600/PicturesLab_Soften_FX_192x192.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-7CkTJ6sRsSM/Tt0hAM00XII/AAAAAAAAAVw/FJZLWJVDfpQ/s1600/PicturesLab_Soften_FX_192x192.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;I recently released an update of my Windows Phone app &lt;a href="http://bit.ly/PicLab"&gt;Pictures Lab&lt;/a&gt;&amp;nbsp;which brings some nice new features like effect combination, two Christmas and a New Year frame and most importantly 7 new languages. Pictures Lab 4.0 now supports 9 languages: English, German, Japanese, Russian, Dutch, French, Italian, Spanish, Portuguese. This was made possible by a group of awesome native-speaking translators: &lt;a href="http://twitter.com/ailon"&gt;Alan Mendelevich&lt;/a&gt;, Takeshi Miyauchi, &lt;a href="http://twitter.com/qbitware"&gt;David Salazar&lt;/a&gt;, &lt;a href="http://twitter.com/localjoost"&gt;Joost van Schaik&lt;/a&gt;, &lt;a href="http://twitter.com/johanptrs"&gt;Johan Peeters&lt;/a&gt;, &lt;a href="http://twitter.com/pbarone"&gt;Paolo Barone&lt;/a&gt;, &lt;a href="http://twitter.com/simonech"&gt;Simone Chiaretta&lt;/a&gt;, &lt;a href="http://twitter.com/pedrolamas"&gt;Pedro Lamas&lt;/a&gt; and &lt;a href="http://twitter.com/quentez"&gt;Quentin Calvez&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I also asked my translators if they know any local Windows Phone news sites / blogs. Below is a list of international and regional Windows Phone news sites we collected. Note, that those are&amp;nbsp;primarily&amp;nbsp;consumer sites read by consumers and not only for developers. This list could be useful if you plan to release a localized version of your app and want to promote it a bit. Most sites have a "Tip Us" or contact form and are mostly happy about new content to write posts about.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;b&gt;Forge&lt;/b&gt;&lt;/span&gt;&lt;b style="color: red;"&gt;t this list!&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b style="color: red;"&gt;Head over to &lt;a href="http://twitter.com/ailon"&gt;@ailon's&lt;/a&gt; awesome dedicated site:&amp;nbsp;&lt;a href="http://windowsphonesites.com/"&gt;http://windowsphonesites.com&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;English&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wmpoweruser.com/"&gt;http://wmpoweruser.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mobilitydigest.com/category/windowsphone/"&gt;http://mobilitydigest.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.wpcentral.com/"&gt;http://www.wpcentral.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://allaboutwindowsphone.com/"&gt;http://allaboutwindowsphone.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://windowsphonegeek.com/"&gt;http://windowsphonegeek.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://zomgitscj.com/"&gt;http://zomgitscj.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mykindofphone.com/"&gt;http://www.mykindofphone.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.windowsphonemetro.com/"&gt;http://www.windowsphonemetro.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://windowsphoneparent.com/"&gt;http://windowsphoneparent.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.1800pocketpc.com/"&gt;http://www.1800pocketpc.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://pocketnow.com/"&gt;http://pocketnow.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.wp7connect.com/"&gt;http://www.wp7connect.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.windowsphonedaily.com/"&gt;http://www.windowsphonedaily.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.wpsauce.com/"&gt;http://www.wpsauce.com&lt;/a&gt;&amp;nbsp;(India)&lt;/li&gt;&lt;li&gt;&lt;a href="http://ilovewindowsphone.in/"&gt;http://ilovewindowsphone.in&lt;/a&gt;&amp;nbsp;(India)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.windowsphonerocks.com/"&gt;http://www.windowsphonerocks.com&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;German&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wp7app.de/"&gt;http://wp7app.de&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.worldofppc.com/"&gt;http://worldofppc.de&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.phoneseven.de/"&gt;http://www.phoneseven.de&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wp7de.com/"&gt;http://wp7de.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.windows-smartphones.de/"&gt;http://www.windows-smartphones.de&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.pocketpc.ch/"&gt;http://www.pocketpc.ch&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Russian&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.pocketpc.ch/"&gt;http://&lt;/a&gt;&lt;a href="http://www.wp7rocks.com/"&gt;WP7Rocks.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.pocketpc.ch/"&gt;http://&lt;/a&gt;&lt;a href="http://wp7forum.ru/"&gt;WP7Forum.ru&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.pocketpc.ch/"&gt;http://&lt;/a&gt;&lt;a href="http://w7phone.ru/"&gt;W7Phone.ru&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.pocketpc.ch/"&gt;http://&lt;/a&gt;&lt;a href="http://w7ph.ru/"&gt;W7Ph.ru&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Japanese&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://nanapho.jp/"&gt;http://nanapho.jp&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.shintak.info/"&gt;http://blogs.shintak.info&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/aonishi"&gt;http://blogs.msdn.com/b/aonishi&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Dutch&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wp7.nl/"&gt;http://wp7.nl&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Spanish&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wphone.es/"&gt;http://wphone.es&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.miwindowsphone.net/"&gt;http://www.miwindowsphone.net&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.windowsphoneforos.com/"&gt;http://www.windowsphoneforos.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wp7total.info/"&gt;http://wp7total.info&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.xataka.com/moviles/windows-phone-7"&gt;http://www.xataka.com/moviles/windows-phone-7&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Portuguese&amp;nbsp;(Brazilian)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://windowsphonebrasil.com.br/"&gt;http://windowsphonebrasil.com.br&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Italian&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.windowsphoneitaly.com/"&gt;http://www.windowsphoneitaly.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.plaffo.com/"&gt;http://www.plaffo.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.wpmitalia.com/"&gt;http://www.wpmitalia.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.windows7blog.it/"&gt;http://www.windows7blog.it&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cellularemagazine.it/"&gt;http://www.cellularemagazine.it&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.tecnophone.it/"&gt;http://www.tecnophone.it&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cellulariadhoc.blogosfere.it/"&gt;http://cellulariadhoc.blogosfere.it&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://webmobile.blogosfere.it/"&gt;http://webmobile.blogosfere.it&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mobileblog.it/"&gt;http://www.mobileblog.it&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mobile.hdblog.it/"&gt;http://mobile.hdblog.it&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;div lang="x-none"&gt;&lt;a href="http://www.hi-techitaly.com/"&gt;http://www.hi-techitaly.com&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;French&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.monwindowsphone.com/"&gt;http://www.monwindowsphone.com&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Danish&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.windowsphonefan.dk/"&gt;http://www.windowsphonefan.dk&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you know more sites, please leave a comment and I'll update the list.&lt;br /&gt;&lt;br /&gt;Telerik &lt;a href="http://www.telerik.com/products/windows-phone/getting-started/promote-your-wp7-app.aspx"&gt;published a nice whitepaper&lt;/a&gt; with more resources about app promotion.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/pfH6ga9k8QE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/129977615004712044/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2011/12/windows-phone-sites-around-world.html#comment-form" title="18 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/129977615004712044" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/129977615004712044" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/pfH6ga9k8QE/windows-phone-sites-around-world.html" title="Windows Phone Sites Around the World" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-7CkTJ6sRsSM/Tt0hAM00XII/AAAAAAAAAVw/FJZLWJVDfpQ/s72-c/PicturesLab_Soften_FX_192x192.jpg" height="72" width="72" /><thr:total>18</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2011/12/windows-phone-sites-around-world.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-1094348066523577182</id><published>2011-10-28T20:36:00.004+02:00</published><updated>2011-10-28T20:47:00.499+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="WriteableBitmapEx" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="Computer graphics" /><category scheme="http://www.blogger.com/atom/ns#" term="Wp7Dev" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="wpdev" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><category scheme="http://www.blogger.com/atom/ns#" term="WriteableBitmap" /><title type="text">WriteableBitmapEx 0.9.8.5 Now Available</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ZGok4PyhBQ0/TqrwNmH-DII/AAAAAAAAAVg/WJw3hVEl0h8/s1600/wbx_rotated.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-ZGok4PyhBQ0/TqrwNmH-DII/AAAAAAAAAVg/WJw3hVEl0h8/s1600/wbx_rotated.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;The &lt;a href="http://writeablebitmapex.codeplex.com/"&gt;WriteableBitmapEx open source library&lt;/a&gt; has come a long way since I created the CodePlex site in December 2009. A lot of features&amp;nbsp;and the support for new platforms&amp;nbsp;were added in subsequent releases. The package is&amp;nbsp;also&amp;nbsp;available via &lt;a href="http://nuget.org/"&gt;NuGet&lt;/a&gt; since this year.&lt;br /&gt;The&amp;nbsp;&lt;a href="http://writeablebitmapex.codeplex.com/releases/view/75811"&gt;new release v0.9.8.5&lt;/a&gt; was just made public.&amp;nbsp;A few new features were added and many small,&amp;nbsp;uncritical&amp;nbsp;issues were fixed (see the list below).&amp;nbsp;The binaries can be downloaded &lt;a href="http://writeablebitmapex.codeplex.com/releases/view/75811"&gt;from here&lt;/a&gt; or via the &lt;a href="http://nuget.org/List/Packages/WriteableBitmapEx"&gt;NuGet package&lt;/a&gt;.&amp;nbsp;Please note that this package only contains the WriteableBitmapEx binaries for Silverlight and Windows Phone. All the samples&amp;nbsp;can be found in the&amp;nbsp;&lt;a href="http://writeablebitmapex.codeplex.com/SourceControl/list/changesets"&gt;source code repository&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Feature list version 0.9.8.5&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Added a Rotate method for arbitrary angles (RotateFree). &lt;a href="http://writeablebitmapex.codeplex.com/workitem/15214"&gt;Provided by montago.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added &lt;a href="http://nokola.com/blog/post/2010/10/14/Anti-aliased-Lines-And-Optimizing-Code-for-Windows-Phone-7e28093First-Look.aspx"&gt;Nokola's anti-aliased line&lt;/a&gt; drawing implementation.&lt;/li&gt;&lt;li&gt;Updated the Windows Phone project to WP 7.1 Mango.&lt;/li&gt;&lt;li&gt;Added an extension code file for the Windows Phone specific extensions and added&amp;nbsp;&lt;a href="http://kodierer.blogspot.com/2010/07/photos-photos-photos-how-to-save-load.html"&gt;SaveToMediaLibrary extensions&lt;/a&gt; including support for saveToCameraRoll.&lt;/li&gt;&lt;li&gt;Added an Invert method, which creates an inverted version of the input bitmap. This is useful for WP7 Theme-awareness checks using Application.Current.Resources["PhoneBackgroundBrush"].&lt;/li&gt;&lt;li&gt;Added FromContent method, which provides an easy interface to load a WriteableBitmap from the content of the app.&lt;/li&gt;&lt;li&gt;Added a static overload for the Resize method which takes the pixels array as argument.&lt;/li&gt;&lt;li&gt;Optimized the DrawLine algorithm.&lt;/li&gt;&lt;li&gt;Fixed &lt;a href="http://writeablebitmapex.codeplex.com/workitem/list/basic"&gt;some issues&lt;/a&gt; with DrawRectangle, FillRectangle, DrawEllipse, FillEllipse and DrawPolyline.&lt;/li&gt;&lt;li&gt;Fixed a bug in the bilinear Resize method that appeared when the alpha value is zero.&lt;/li&gt;&lt;li&gt;Fixed other minor issues.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Community&amp;nbsp;Community Community!&lt;/b&gt;&lt;br /&gt;Thanks to the community for constantly reporting bugs, suggesting new features and contributing code. That's exactly why open source software is just awesome.&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/bZcioBiDe0A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/1094348066523577182/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2011/10/writeablebitmapex-v0985-now-available.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/1094348066523577182" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/1094348066523577182" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/bZcioBiDe0A/writeablebitmapex-v0985-now-available.html" title="WriteableBitmapEx 0.9.8.5 Now Available" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-ZGok4PyhBQ0/TqrwNmH-DII/AAAAAAAAAVg/WJw3hVEl0h8/s72-c/wbx_rotated.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2011/10/writeablebitmapex-v0985-now-available.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-4837998458327773869</id><published>2011-09-17T20:04:00.004+02:00</published><updated>2011-09-20T10:17:31.059+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="WriteableBitmapEx" /><category scheme="http://www.blogger.com/atom/ns#" term="WinRT" /><category scheme="http://www.blogger.com/atom/ns#" term="wp7" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><category scheme="http://www.blogger.com/atom/ns#" term="Win8" /><title type="text">Welcome to Zombieland, the Metro Style Land of WinRT and the Undead</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-zfEW-P-GCn8/TnSsNsjtvQI/AAAAAAAAAVE/V2RblfhHzJo/s1600/zombies.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-zfEW-P-GCn8/TnSsNsjtvQI/AAAAAAAAAVE/V2RblfhHzJo/s1600/zombies.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Silverlight is dead! WPF is dead! .NET is dead! Hey,&amp;nbsp;they didn't talk about&amp;nbsp;SharePoint or SQL Server at the&amp;nbsp;&lt;a href="http://www.buildwindows.com/"&gt;BUILD conference&lt;/a&gt;, those must be dead too. Welcome our new Metro-id overlords!&lt;br /&gt;We read such &lt;a href="http://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt"&gt;FUD&lt;/a&gt; everywhere these days. Actually none of these technologies are dead for the next several years! And you'll probably agree if you know the facts and not the FUD.&amp;nbsp;So here are my thoughts based only on the facts I got from watching &lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011"&gt;BUILD sessions&lt;/a&gt;, reading posts that stick to the facts and not listening to people who&amp;nbsp;obviously&amp;nbsp;didn't inform themselves, but nevertheless spread FUD around.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What happened&lt;/b&gt;&lt;br /&gt;Microsoft announced the new version of Windows at the&amp;nbsp;&lt;a href="http://www.buildwindows.com/"&gt;BUILD conference&lt;/a&gt;&amp;nbsp;and the new Windows 8 runtime called WinRT, which is used to develop &lt;a href="http://en.wikipedia.org/wiki/Metro_(design_language)"&gt;Metro&lt;/a&gt; style Apps.&amp;nbsp;Metro style Apps are&amp;nbsp;primarily&amp;nbsp;focused&amp;nbsp;on consumers, designed touch first and therefore perfect for modern multi-touch devices like tablets.&lt;br /&gt;The good ol' desktop is still there and the usual Windows applications are now called Desktop Apps.&lt;br /&gt;There's a lot confusion out there at the moment and many think only Metro style Apps are the future. Actually both models can exist side-by-side and I'm sure the mainly used UI will be the classic desktop for the usual business client. Metro is for tablets, maybe later for the phone. Desktop Apps will still work better for the classic business PC scenario in an office.&lt;br /&gt;After trying Windows 8 I don't see myself using Metro style Apps a lot on my PC when I work at the desk. However, I will love to use it when I'm hanging out on my couch with a tablet. The good news is, both models are supported by Windows 8 and therefore can run on one device, &lt;a href="http://channel9.msdn.com/posts/Windows-8-Running-on-ARM"&gt;including ARM hardware&lt;/a&gt;. Awesome!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;WinRT&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-1tz7Z6nUsak/TnS0RJ7ZBAI/AAAAAAAAAVI/SsgmbSV_zlc/s1600/windows8-winrt_thumb.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="360" src="http://4.bp.blogspot.com/-1tz7Z6nUsak/TnS0RJ7ZBAI/AAAAAAAAAVI/SsgmbSV_zlc/s640/windows8-winrt_thumb.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;First and foremost, .NET plays a&amp;nbsp;significant&amp;nbsp;role in both development models and is not only used for Desktop Apps. I guess the FUD comes from the architectural picture above, where .NET and Silverlight are only represented by a small box in the lower right corner. Of course Microsoft wants to push the new Metro style Apps, the WinRT model and wants to get web developers into the boat, so they adjusted the graphic and&amp;nbsp;marketing&amp;nbsp;message accordingly.&lt;br /&gt;WinRT is actually a new native COM&amp;nbsp;library, plus some extra&amp;nbsp;infrastructure. Therefore an app developer has not to deal with the COM stuff directly, instead you get a thin / fast projection layer (binding) for each of the supported programming languages. This projection layer is automatically built using WinMD metadata and provides projections for JavaScript, .NET (C# / VB) or C / C++. The UI can be designed with XAML or HTML / CSS in case of JavaScript.&lt;br /&gt;The rendering is&amp;nbsp;completely&amp;nbsp;done using DirectX 11.1 (Direct2D) which results in great performance. In Windows 8 the rendering job is finally fully executed by the right processor.&amp;nbsp;This architecture makes it also possible to implement the complete UI just with DirectX, which will usually be done by games. At the moment it's not possible in the Windows 8 Developer Preview to mix a XAML app with DirectX, which doesn't make much sense since the XAML rendering is done by DirectX. Fortunately all hints that it'll be possible in a later version of Windows 8, maybe in the beta.&lt;br /&gt;&lt;br /&gt;The below picture by &lt;a href="http://dougseven.com/2011/09/15/a-bad-picture-is-worth-a-thousand-long-discussions/"&gt;Doug Seven&lt;/a&gt; is a way more accurate picture of the Windows 8 platform architecture.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-uUSc-JjjBDs/TnWkasRU74I/AAAAAAAAAVM/LEw5eIIA4Mw/s1600/win8-new-platform.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="360" src="http://1.bp.blogspot.com/-uUSc-JjjBDs/TnWkasRU74I/AAAAAAAAAVM/LEw5eIIA4Mw/s640/win8-new-platform.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;There are a few good, unbiased posts about&amp;nbsp;WinRT out there, which stick to the facts:&lt;br /&gt;&lt;a href="http://www.infoq.com/news/2011/09/WinRT-API"&gt;WinRT: An Object Orientated Replacement for Win32&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bit.ly/r0a3Mm"&gt;WinRT, the C++ Component Extensions&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tirania.org/blog/archive/2011/Sep-15.html"&gt;WinRT&amp;nbsp;demystified&amp;nbsp;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dougseven.com/2011/09/15/a-bad-picture-is-worth-a-thousand-long-discussions/"&gt;A bad picture is worth a thousand long discussions.&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/br211377(v=VS.85).aspx"&gt;WinRT reference with all namespaces&lt;/a&gt;&amp;nbsp;at the unbiased MSDN, where JaveScript is just another language one can use for Metro style Apps.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;WinRT and .NET&lt;/b&gt;&lt;br /&gt;From what I have seen so far, coding Metro style Apps using C# / .NET seems pretty straightforward if&amp;nbsp;you've done Silverlight, WPF or esp. Windows Phone development before. The &lt;a href="http://en.wikipedia.org/wiki/Base_Class_Library"&gt;BCL&lt;/a&gt; used by .NET WinRT is not the full Desktop version of .NET 4.5, it's a reduced set similar to the Silverlight types.&lt;br /&gt;The design of the native WinRT COM&amp;nbsp;library&amp;nbsp;was heavily influenced by .NET. You see it everywhere. Type names, Properties, Events... Even WinMD is the .NET assembly metadata format.&lt;br /&gt;WinRT types map to .NET types and copying of data structures at the boundaries is avoided by the projection layer to get the best performance.&amp;nbsp;Only two types need to be converted using built-in extension methods. The System.IO.Stream can't be mapped to the WinRT stream, so there's an extension method. A Byte[] to WinRT IBuffer conversion is the other extension method.&lt;br /&gt;You can even write your own, custom WinRT components in C# without decorating the classes with ugly COM attributes. Those components are then automatically exposed to the other languages using the generic WinMD metadata. So you can write a component in C++ or in C# and use it from a JavaScript WinRT project. Pretty cool concept if you ask me.&lt;br /&gt;Many WinRT classes look like&amp;nbsp;their&amp;nbsp;origin is .NET / Silverlight and the WinRT WriteableBitmap is also very similar to Silverlight's implementation. &lt;b&gt;So expect a WinRT version of my &lt;a href="http://writeablebitmapex.codeplex.com/"&gt;open source WriteableBitmapEx&amp;nbsp;library&lt;/a&gt;&amp;nbsp;in a few weeks &lt;/b&gt;when I'm done with the Mango updates for all my Windows Phone apps&lt;b&gt;. &lt;/b&gt;After that I will&amp;nbsp;probably&amp;nbsp;port / rewrite some of my WP7 apps for WinRT.&lt;br /&gt;&lt;br /&gt;The lifecycle of a WinRT app should &amp;nbsp;be quite familiar for a WP7 developer, since it's&amp;nbsp;similar to the WP 7.5 Mango Fast App Switching. The lifecycle states are: Running &amp;gt; Suspended in RAM &amp;gt; Terminated. Apps get an event for suspending, not for terminate, so the state has to be saved during suspending. Of course an app should only be resurrected from the tombstone state if the app was launched, not when resumed.&amp;nbsp;Apps get 5s for suspending and need to&amp;nbsp;launch within 15s. Unfortunately we don't know the reference machine where those values are measured. Probably the low end configuration.&lt;br /&gt;By the way, the Windows Store will be the better version of the WP7 Marketplace. It will include In-App offers, time limited trials and a very nice dashboard with a lot of analytic capabilities and insights.&lt;br /&gt;In general should a WP7 developer feel most familiar with WinRT. Many concepts made it into WinRT and were improved and actually cleaned up.&lt;br /&gt;My Silverlight MVP friend Morten Nielsen started a blog post series &lt;a href="http://bit.ly/nlpVrA"&gt;about how to port Silverlight / WPF apps to WinRT&lt;/a&gt;.&lt;br /&gt;You should also read this post:&amp;nbsp;&lt;a href="http://www.lhotka.net/weblog/WinRTAndNET.aspx"&gt;WinRT and .NET&lt;/a&gt;&amp;nbsp;and watch the ton of &lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011"&gt;great BUILD sessions&lt;/a&gt;.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;/div&gt;&lt;div&gt;I welcome the new possibilities and great performance we get in Windows 8 with the WinRT. I'm sure Windows 8 will be an awesome tablet OS.&lt;br /&gt;XAML has become a first class citizen and .NET is now installed with Windows 8. Microsoft is also&amp;nbsp;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-834T"&gt;working on a next version of .N&lt;/a&gt;ET. Version 4.5 of .NET will bring better performance for WPF's ItemsControl for example. Seems not very dead to me. In fact, a&amp;nbsp;Silverlight / WPF / WP7 developer's knowledge of XAML and the Silverlight runtime is more valuable than ever before with WinRT.&lt;br /&gt;Silverlight 5 is still in&amp;nbsp;development and wasn't even released. We don't know if it will be the last version or if Silverlight 6 will see the light of the day. For now I'm quite happy with all the features of Silverlight 5 and we can develop a ton of applications for our customers for the next several years.&lt;/div&gt;&lt;div&gt;One should also not forget how long it will take until Windows 8 is finally out and reached a critical mass. A lot of machines out there still run Windows XP. Windows 7 is way better and I guess the transition to Windows 8 will take even longer. Windows 8 will probably mainly pushed by non-PC multi-touch consumer devices in the near future.&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.telerikwatch.com/2011/09/how-to-pick-your-platform-silverlight.html"&gt;This flowchart&lt;/a&gt; by the Telerik guys sums it up pretty nicely.&lt;br /&gt;&lt;br /&gt;So get yourself informed and start coding away.&amp;nbsp;Don't give FUD a chance!&lt;/div&gt;&lt;div style="font-weight: bold;"&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/U3L13pvBHVQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/4837998458327773869/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2011/09/welcome-to-zombieland-metro-style-land.html#comment-form" title="13 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/4837998458327773869" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/4837998458327773869" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/U3L13pvBHVQ/welcome-to-zombieland-metro-style-land.html" title="Welcome to Zombieland, the Metro Style Land of WinRT and the Undead" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-zfEW-P-GCn8/TnSsNsjtvQI/AAAAAAAAAVE/V2RblfhHzJo/s72-c/zombies.jpg" height="72" width="72" /><thr:total>13</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2011/09/welcome-to-zombieland-metro-style-land.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-7541939511649560840</id><published>2011-06-23T22:41:00.004+02:00</published><updated>2011-06-23T22:46:56.364+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Imagine Cup" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="wp7" /><category scheme="http://www.blogger.com/atom/ns#" term="Wp7Dev" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><title type="text">Imagine Cup 2011 Worldwide Finals</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Tz8SaHYtfiQ/TgObx2KXqRI/AAAAAAAAARc/oB4pMzv11k0/s1600/imagine_cup_2011_logo.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-Tz8SaHYtfiQ/TgObx2KXqRI/AAAAAAAAARc/oB4pMzv11k0/s1600/imagine_cup_2011_logo.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;The &lt;a href="http://www.imaginecup.com/"&gt;Imagine Cup&lt;/a&gt; is one of the world's premier student tech&amp;nbsp;competitions. Students compete in different categories like Software Design, Game Design, Windows Phone 7 and &lt;a href="http://www.imaginecup.com/competitions"&gt;more&lt;/a&gt;. The&amp;nbsp;competitions&amp;nbsp;begin each year with local events in over 100 countries. The best of the best will then participate in the worldwide final. &amp;nbsp;The 2011 Imagine Cup Worldwide Finals will be held from 8 - 13 July in New York City, USA.&lt;br /&gt;&lt;br /&gt;I'm very honored to take part in the &lt;a href="http://www.imaginecup.com/"&gt;Imagine Cup 2011 Worldwide Finals&lt;/a&gt;&amp;nbsp;as a judge in the Windows Phone category. The &lt;a href="http://www.imaginecup.com/worldwide-finals/2011-judges#windows_phone_7"&gt;Windows Phone judges&lt;/a&gt; consist of two&amp;nbsp;community&amp;nbsp;members and two Microsoft employees. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;People's Choice Award&lt;/b&gt;&lt;br /&gt;There's also a &lt;a href="http://www.imaginecup.com/worldwide-finals/peoples-choice-award/media-gallery"&gt;People's Choice Award&lt;/a&gt; where everyone can vote for their favorite team. &lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Can you say no if Eva Longoria asks you to vote?&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;iframe allowfullscreen="" frameborder="0" height="349" src="http://www.youtube.com/embed/rB6GF1PyjgA" width="560"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You can find a list of all the Windows Phone finalist teams &lt;a href="http://www.imaginecup.com/worldwide-finals/2011-finalists-winners#windows"&gt;here&lt;/a&gt;. All the teams have built great&amp;nbsp;solutions&amp;nbsp;around the &lt;a href="http://www.imaginecup.com/about/Theme"&gt;theme for 2011&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;i&gt;Imagine a world where technology&amp;nbsp;helps solve the toughest problems.&lt;/i&gt;&lt;br /&gt;There's no filter for a category at the People's Choice Award website, that's why I made a list of all the Windows Phone finalists entries:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.imaginecup.com/worldwide-finals/peoples-choice-award/view-and-vote.aspx?r=6504"&gt;DREGON&lt;/a&gt; by team "Digitron-WP7" from Belgium.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.imaginecup.com/worldwide-finals/peoples-choice-award/view-and-vote.aspx?r=6450"&gt;Peekaboo&lt;/a&gt; by team "HOMERUN" from Korea.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.imaginecup.com/worldwide-finals/peoples-choice-award/view-and-vote.aspx?r=6407"&gt;Hot Potato&lt;/a&gt;&amp;nbsp;by team "Zipi Zigi" from Korea.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.imaginecup.com/worldwide-finals/peoples-choice-award/view-and-vote.aspx?r=6395"&gt;Recyclocator&lt;/a&gt;&amp;nbsp;by team "Code Instincts" from Singapore.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.imaginecup.com/worldwide-finals/peoples-choice-award/view-and-vote.aspx?r=6493"&gt;Lifelens&lt;/a&gt;&amp;nbsp;by team "The LifeLens Project" from USA.&lt;/li&gt;&lt;/ul&gt;Please cast your vote.&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/HH-5gCitW2s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/7541939511649560840/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2011/06/imagine-cup-2011-worldwide-finals.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/7541939511649560840" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/7541939511649560840" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/HH-5gCitW2s/imagine-cup-2011-worldwide-finals.html" title="Imagine Cup 2011 Worldwide Finals" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-Tz8SaHYtfiQ/TgObx2KXqRI/AAAAAAAAARc/oB4pMzv11k0/s72-c/imagine_cup_2011_logo.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2011/06/imagine-cup-2011-worldwide-finals.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-7028698346500298176</id><published>2011-06-16T21:45:00.003+02:00</published><updated>2011-06-17T10:30:07.334+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3D" /><category scheme="http://www.blogger.com/atom/ns#" term="SLARToolkit" /><category scheme="http://www.blogger.com/atom/ns#" term="Computer graphics" /><category scheme="http://www.blogger.com/atom/ns#" term="Webcam" /><category scheme="http://www.blogger.com/atom/ns#" term="SL53D" /><category scheme="http://www.blogger.com/atom/ns#" term="Balder" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight 5" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="Augmented Reality" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><title type="text">Cubelicious - Silverlight 5 + Balder + Physics + SLARToolkit Augmented Reality = Triple Win!</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-y8QY-y4_s_s/TfpcfQf2gGI/AAAAAAAAARU/8OZHL-EJ_9Y/s1600/SLAR_SL5_Balder_Demo_192x192.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-y8QY-y4_s_s/TfpcfQf2gGI/AAAAAAAAARU/8OZHL-EJ_9Y/s1600/SLAR_SL5_Balder_Demo_192x192.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Two months ago I &lt;a href="http://kodierer.blogspot.com/2011/04/silverlight-5-3d-slartoolkit-augmented.html"&gt;released a new Silverlight 5 sample&lt;/a&gt; for my open source Silverlight Augmented Reality Toolkit - &lt;a href="http://slartoolkit.codeplex.com/"&gt;SLARToolkit&lt;/a&gt;. It uses the new Silverlight 5 hardware&amp;nbsp;accelerated&amp;nbsp;3D API. You can read more about the new Silverlight 5 XNA 3D API&amp;nbsp;in&amp;nbsp;&lt;a href="http://kodierer.blogspot.com/2011/04/xna-for-web-silverlight-5.html"&gt;this blog post&lt;/a&gt;.&lt;br /&gt;This post here provides a new demo for SLARToolkit which uses the open source 3D engine &lt;a href="http://balder.codeplex.com/"&gt;Balder&lt;/a&gt; by my friend &lt;a href="http://www.ingebrigtsen.info/"&gt;Einar Ingebrigsten&lt;/a&gt;. This demo also leverages the open source physics engine &lt;a href="http://jiglibx.codeplex.com/"&gt;JigLibX&lt;/a&gt; my buddy &lt;a href="http://www.andybeaulieu.com/"&gt;Andy Beaulieu&lt;/a&gt;&amp;nbsp;&lt;a href="http://www.andybeaulieu.com/Home/tabid/67/EntryID/216/Default.aspx"&gt;ported over to Silverlight&lt;/a&gt;.&amp;nbsp;You can try the live sample if you have the&amp;nbsp;&lt;a href="http://www.silverlight.net/getstarted/silverlight-5-beta/"&gt;Silverlight 5 beta&lt;/a&gt;&amp;nbsp;installed or watch a &lt;a href="http://vimeo.com/25201841"&gt;video&lt;/a&gt; instead.&lt;br /&gt;&lt;br /&gt;I actually spent most of the time on this project a couple of weeks ago. My good Silverlight MVP friend&amp;nbsp;&lt;a href="http://www.ingebrigtsen.info/"&gt;Einar Ingebrigtsen&lt;/a&gt;&amp;nbsp;used it in his talk at&amp;nbsp;&lt;a href="http://www.gathering.org/tg11/en/"&gt;The Gathering 2011&lt;/a&gt;. Now I finally had a bit time to finish the demo, make a video and this blog post.&lt;br /&gt;&lt;br /&gt;The SLARToolkit project description from the&amp;nbsp;&lt;a href="http://slartoolkit.codeplex.com/"&gt;CodePlex site&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;i&gt;SLARToolkit is a flexible Augmented Reality library for Silverlight with the aim to make real time&amp;nbsp;&lt;a class="externalLink" href="http://en.wikipedia.org/wiki/Augmented_Reality"&gt;Augmented Reality&lt;/a&gt;&amp;nbsp;applications with Silverlight as easy and fast as possible. It can be used with Silverlight's Webcam API or with any other CaptureSource or a WriteableBitmap. SLARTookit is based on the established&amp;nbsp;&lt;a class="externalLink" href="http://nyatla.jp/nyartoolkit"&gt;NyARToolkit&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a class="externalLink" href="http://en.wikipedia.org/wiki/ARToolKit"&gt;ARToolkit&lt;/a&gt;.&amp;nbsp;&lt;/i&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Live&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;A webcam and at least the &lt;a href="http://www.silverlight.net/getstarted/silverlight-5-beta/"&gt;Silverlight 5 beta runtime&lt;/a&gt; must be installed to run the sample. It's available &lt;a href="http://www.silverlight.net/getstarted/silverlight-5-beta/"&gt;here&lt;/a&gt;. Alternatively there is also a video of the new sample embedded below.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;If you want to try it yourself you need do download the&amp;nbsp;&lt;a class="externalLink" href="http://dl.dropbox.com/u/2681028/CodeplexData/SLARToolkit/Marker/Marker_SLAR_16x16segments_80width.pdf"&gt;SLAR&lt;/a&gt;&amp;nbsp;and / or&amp;nbsp;&lt;a class="externalLink" href="http://dl.dropbox.com/u/2681028/CodeplexData/SLARToolkit/Marker/Marker_L_16x16segments_80width.pdf"&gt;L&lt;/a&gt;&amp;nbsp;marker, print them and hold them in front of the camera. The marker(s) should be printed non-scaled at the original size (80 x 80 mm) and centered for a small white border. As an alternative it's also possible to open a marker file on a mobile device and to use the device's screen as marker. Also make sure the camera is set up properly and the scene is illuminated well without hard shadows. See the SLARToolkit&amp;nbsp;&lt;a href="http://slartoolkit.codeplex.com/wikipage?title=Markers&amp;amp;referringTitle=Home"&gt;Markers&lt;/a&gt;&amp;nbsp;documentation for more details.&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;a href="http://dl.dropbox.com/u/2681028/CodeplexData/SLARToolkit/Samples/SLARToolKitBalderSampleSL5/SLARToolKitBalderSampleSL5TestPage.html"&gt;Open the sample in a new page.&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-5mgeFhbMLhY/TfpcmrXA0GI/AAAAAAAAARY/Mu3MLn9Y9Y8/s1600/screenshot.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="584" src="http://2.bp.blogspot.com/-5mgeFhbMLhY/TfpcmrXA0GI/AAAAAAAAARY/Mu3MLn9Y9Y8/s640/screenshot.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Simply press the "Start Cam" Button to start the webcam. The properties of the particle system can &amp;nbsp;be changed with Sliders. The "Flip x-axis" Checkbox can be used to flip the video (the webcam output is mirror-reversed by default).&amp;nbsp;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;If you click the "Start Cam" Button for the first time you need to give your permission for the capturing. This application uses the default Silverlight capture device. You can specify the video and audio devices that are used by default with the Silverlight Configuration. Just press the right mouse button over the application, click "Silverlight" in the context menu and select the "Webcam / Mic" tab to set them.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;Video&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;I've recorded a short video of the new sample with&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Microsoft_Expression_Encoder"&gt;Expression Encoder&lt;/a&gt;'s Screen Capture feature. Please keep in mind that the screen recording software eats up a lot of resources while recording and that the actual frame rate is even better. The video is also available at &lt;a href="http://www.youtube.com/watch?v=q5vnLR8C4lw"&gt;YouTube&lt;/a&gt;.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;iframe frameborder="0" height="448" src="http://player.vimeo.com/video/25201841?portrait=0" width="560"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Background music is &lt;a href="http://ccmixter.org/files/_ghost/3631"&gt;Lullaby&lt;/a&gt;&amp;nbsp;by _ghost&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;This demo shows how the new Silverlight 5 3D API, the &lt;a href="http://balder.codeplex.com/"&gt;Balder&lt;/a&gt; engine and the&amp;nbsp;&lt;a href="http://jiglibx.codeplex.com/"&gt;JigLibX&lt;/a&gt;&amp;nbsp;physics library can be used to&amp;nbsp;augment&amp;nbsp;the reality with the help of SLARToolkit.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;How it works&lt;/b&gt;&lt;/div&gt;This sample uses the webcam video stream which fills a Rectangle shape, the video stream is also&amp;nbsp;constantly&amp;nbsp;captured and fed to the SLARToolkit&amp;nbsp;&lt;a href="http://slartoolkit.codeplex.com/wikipage?title=Marker%20Detectors&amp;amp;referringTitle=Documentation"&gt;BitmapMarkerDetector&lt;/a&gt;&amp;nbsp;to detect the markers. The detection result contains a transformation matrix for each found marker which is then used to apply a global transformation to the cubes and the plane.&lt;br /&gt;I implemented a particle system with a flexible directed emitter which can be controlled through various properties. The particle system is quite generic and can be used for all kinds of particles (3D objects). The particle collision&amp;nbsp;detection&amp;nbsp;and resolving is based on rigid body physics that was implemented with the help of the &lt;a href="http://jiglibx.codeplex.com/"&gt;JigLibX&lt;/a&gt;&amp;nbsp;library&amp;nbsp;my Silverlight MVP buddy&amp;nbsp;&lt;a href="http://www.andybeaulieu.com/"&gt;Andy Beaulieu&lt;/a&gt;&amp;nbsp;&lt;a href="http://www.andybeaulieu.com/Home/tabid/67/EntryID/216/Default.aspx"&gt;ported over to Silverlight&lt;/a&gt;.&lt;br /&gt;The rendering and the model loading is done by the 3D engine&amp;nbsp;&lt;a href="http://balder.codeplex.com/"&gt;Balder&lt;/a&gt;. It's a fantastic open source engine by &lt;a href="http://www.ingebrigtsen.info/"&gt;Einar Ingebrigtsen&lt;/a&gt;. You just need to write a couple lines of XAML and you're good to go. This sample only uses a simple cube model, but Balder has built-in model loaders to load complex 3D models and Einar provides a big sample library. He also&amp;nbsp;brought the engine to a few more platforms like Windows Phone 7, OpenGL and has even a neat software rendering fallback. Read his blog post&amp;nbsp;&lt;a href="http://www.ingebrigtsen.info/post/2011/04/13/Silverlight-5-and-Balder.aspx"&gt;here&lt;/a&gt;.&lt;br /&gt;As part of this sample I needed some vector and quaternion methods which were missing in Balder. I contributed those and the generic particle system to the&amp;nbsp;&lt;a href="http://balder.codeplex.com/"&gt;Balder&lt;/a&gt;&amp;nbsp;project. Feel free to use the particle system and the other methods in your Balder projects.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Download it, build your app and augment your reality&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_EtiC5s1ztXY/S4QyAZcMegI/AAAAAAAAAKI/T8kjtsi6pMU/s1600-h/SLARToolKit_logo.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_EtiC5s1ztXY/S4QyAZcMegI/AAAAAAAAAKI/T8kjtsi6pMU/s1600/SLARToolKit_logo.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;The open source &lt;a href="http://slartoolkit.codeplex.com/"&gt;SLARToolkit library and all samples are hosted at CodePlex&lt;/a&gt;. If you have any comments, questions or  suggestions don't hesitate and write a comment, use the &lt;a href="http://slartoolkit.codeplex.com/WorkItem/List.aspx"&gt;Issue Tracker&lt;/a&gt;  on the CodePlex site or contact me &lt;a href="http://flavors.me/rschu"&gt;via any other media&lt;/a&gt;.&lt;br /&gt;Have fun with the library and please keep me updated if you use it anywhere so I can put a link on the project site.&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/AWfzTaORdcE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/7028698346500298176/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2011/06/cubelicious-silverlight-5-balder.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/7028698346500298176" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/7028698346500298176" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/AWfzTaORdcE/cubelicious-silverlight-5-balder.html" title="Cubelicious - Silverlight 5 + Balder + Physics + SLARToolkit Augmented Reality = Triple Win!" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-y8QY-y4_s_s/TfpcfQf2gGI/AAAAAAAAARU/8OZHL-EJ_9Y/s72-c/SLAR_SL5_Balder_Demo_192x192.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2011/06/cubelicious-silverlight-5-balder.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-8819656724529804963</id><published>2011-05-27T01:05:00.002+02:00</published><updated>2011-05-27T08:32:22.024+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="Mango" /><category scheme="http://www.blogger.com/atom/ns#" term="wp7" /><category scheme="http://www.blogger.com/atom/ns#" term="Wp7Dev" /><category scheme="http://www.blogger.com/atom/ns#" term="Mobile" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title type="text">Nodo vs Mango - Windows Phone ListBox Performance Improvements in Action</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-8XeyZ9e9Zec/Td7R3xG7DfI/AAAAAAAAARQ/xm1JKR6wBZw/s1600/NodovsMango_ListBox_Scrolling_Perf.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-8XeyZ9e9Zec/Td7R3xG7DfI/AAAAAAAAARQ/xm1JKR6wBZw/s1600/NodovsMango_ListBox_Scrolling_Perf.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;There were quite a few complaints about the Windows Phone's ListBox scrolling performance in the past. The Windows Phone team obviously heard it and heavily worked on the performance and responsiveness of the whole platform and the ListBox in particular. The touch input processing was loaded off from the UI thread to a new separate thread.&amp;nbsp;Additionally&amp;nbsp;the BitmapImage doesn't load the data on the UI thread anymore. I'm sure lots of other tweaks were implemented to increase the&amp;nbsp;performance&amp;nbsp;and the responsiveness of the platform. I think the&amp;nbsp;Windows Phone&amp;nbsp;team did a very good job!&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Showdown&lt;/b&gt;&lt;/div&gt;&lt;div&gt;The video below shows a side-by-side comparison of a Nodo device with build 7392 and a prototype device with a Mango prebuild. The Nodo device on the left side is a Samsung Omnia 7, the Mango device on the right side is the ASUS prototype.&lt;/div&gt;&lt;div&gt;For&amp;nbsp;comparison&amp;nbsp;I use the official Twitter app build against 7.0 and in the second half of the video I show the effects preview list of my &lt;a href="http://bit.ly/PicturesLab"&gt;Pictures Lab&lt;/a&gt; app. This effects pivot item only uses a ListBox with a DataTemplate that contains an Image control&amp;nbsp;with a fixed size and a TextBox for each item. So there's no background image loading being performed or any other heavy computing, just a static list with a lot of redrawing.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;iframe allowfullscreen="" frameborder="0" height="349" src="http://www.youtube.com/embed/DivNORSksYE?hd=1" width="560"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;Background music is&amp;nbsp;&lt;a href="https://8bc.org/music/SMILETRON/Taiga/"&gt;Taiga&lt;/a&gt;&amp;nbsp;by SMILETRON&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;As you can see,&amp;nbsp;it's quite a huge difference and even this Mango prebuild &amp;nbsp;runs very smooth on this&amp;nbsp;rather old ASUS&amp;nbsp;hardware. There's still some room left for more improvement, like the rasterizer, but imagine the boost on production devices with the final Mango version.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://youtu.be/AnKysErG4hA"&gt;MANGO, MANGO, MANGO!&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;I don't have a deal with Microsoft or are paid to blog or tweet this. I'm just exited about all the goodies that are coming with Mango. Good times.&lt;/i&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/Z0ZOX6E4C_g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/8819656724529804963/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2011/05/nodo-vs-mango-windows-phone-listbox.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/8819656724529804963" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/8819656724529804963" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/Z0ZOX6E4C_g/nodo-vs-mango-windows-phone-listbox.html" title="Nodo vs Mango - Windows Phone ListBox Performance Improvements in Action" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-8XeyZ9e9Zec/Td7R3xG7DfI/AAAAAAAAARQ/xm1JKR6wBZw/s72-c/NodovsMango_ListBox_Scrolling_Perf.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2011/05/nodo-vs-mango-windows-phone-listbox.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-6565242303013919774</id><published>2011-05-25T21:01:00.002+02:00</published><updated>2011-05-25T21:45:04.462+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3D" /><category scheme="http://www.blogger.com/atom/ns#" term="SLARToolkit" /><category scheme="http://www.blogger.com/atom/ns#" term="Computer graphics" /><category scheme="http://www.blogger.com/atom/ns#" term="Webcam" /><category scheme="http://www.blogger.com/atom/ns#" term="Unity3D" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="Augmented Reality" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><title type="text">Unity 3D and Silverlight in Harmony with SLARToolkit's Augmented Reality</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-kmS_uFZetfo/TdzM8A8RsPI/AAAAAAAAARM/fhtdu1EhuFk/s1600/SLARToolkit_external_StarFighter_192x192.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-kmS_uFZetfo/TdzM8A8RsPI/AAAAAAAAARM/fhtdu1EhuFk/s1600/SLARToolkit_external_StarFighter_192x192.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;If you read this blog&amp;nbsp;regularly, you might have noticed a lot of &lt;a href="http://slartoolkit.codeplex.com/"&gt;SLARToolkit&lt;/a&gt; &lt;a href="http://kodierer.blogspot.com/search/label/SLARToolkit"&gt;posts&lt;/a&gt; recently. But I'm not the only one using the open source Silverlight Augmented Reality Toolkit. There's great stuff happening out there and I see quite a few projects, especially in the academic field.&amp;nbsp;You can find a full list of projects (I know of) on the&amp;nbsp;&lt;a href="http://slartoolkit.codeplex.com/"&gt;SLARToolkit&lt;/a&gt;&amp;nbsp;project site at CodePlex.&lt;br /&gt;I love when people use my open source work, adapt or learn from it. This is what open source is all about for me.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One project recently caught my attention in particular. &lt;a href="http://www.alexju.be/"&gt;Ioulian Alexeev&lt;/a&gt; made a very amazing action game using the &lt;a href="http://unity3d.com/"&gt;Unity 3D&lt;/a&gt; game engine and he combined it with SLARToolkit to control the spaceship with a marker. Ioulian studies Multimedia at the &lt;a href="http://www.arteveldehs.be/"&gt;Arteveldehogeschool&lt;/a&gt; in Belgium and the game "StarFighter" was his bachelors test.&lt;br /&gt;&lt;br /&gt;He recorded this nice video.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;iframe allowfullscreen="" frameborder="0" height="450" src="http://www.youtube.com/embed/9BbfWq0EcIo" width="560"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Note how he compares the performance of the Flash Augmented Reality Tookit and&amp;nbsp;&lt;a href="http://slartoolkit.codeplex.com/"&gt;SLARToolkit&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;Performance FLARManager: Not good enough for action games&lt;br /&gt;Performance SLARToolkit: Very fast and accurate marker tracking&lt;/i&gt;&lt;/blockquote&gt;Both toolkits use the same marker-based AR algorithms from the&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/ARToolKit"&gt;ARToolkit&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Live&lt;/b&gt;&lt;br /&gt;You can &lt;a href="http://www.alexju.be/archive/sf/"&gt;play the game here&lt;/a&gt;. If you want to try it yourself you need do download the&amp;nbsp;&lt;a class="externalLink" href="http://dl.dropbox.com/u/2681028/CodeplexData/SLARToolkit/Marker/Marker_SLAR_16x16segments_80width.pdf"&gt;SLAR&lt;/a&gt;&amp;nbsp;and / or&amp;nbsp;&lt;a class="externalLink" href="http://dl.dropbox.com/u/2681028/CodeplexData/SLARToolkit/Marker/Marker_L_16x16segments_80width.pdf"&gt;L&lt;/a&gt;&amp;nbsp;marker, print them and point the camera toward these. The marker(s) should be printed non-scaled at the original size (80 x 80 mm) and centered for a small white border. As an alternative it's also possible to open a marker file on a different device and to use the device's screen as marker.&lt;br /&gt;See the SLARToolkit&amp;nbsp;&lt;a href="http://slartoolkit.codeplex.com/wikipage?title=Markers&amp;amp;referringTitle=Home"&gt;Markers&lt;/a&gt;&amp;nbsp;documentation for more details.&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/KfN6Zy7OIcg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/6565242303013919774/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2011/05/unity-3d-and-silverlight-in-harmony.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/6565242303013919774" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/6565242303013919774" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/KfN6Zy7OIcg/unity-3d-and-silverlight-in-harmony.html" title="Unity 3D and Silverlight in Harmony with SLARToolkit's Augmented Reality" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-kmS_uFZetfo/TdzM8A8RsPI/AAAAAAAAARM/fhtdu1EhuFk/s72-c/SLARToolkit_external_StarFighter_192x192.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2011/05/unity-3d-and-silverlight-in-harmony.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-4366553423113444869</id><published>2011-05-25T20:31:00.003+02:00</published><updated>2011-05-26T21:35:39.800+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="Mango" /><category scheme="http://www.blogger.com/atom/ns#" term="Computer graphics" /><category scheme="http://www.blogger.com/atom/ns#" term="Wp7Dev" /><category scheme="http://www.blogger.com/atom/ns#" term="Mobile" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title type="text">Why is a Y in the Windows Phone Mango Camera API</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-_mY_LyyqreI/Tdy-cdGqxMI/AAAAAAAAARI/A36-Rkj689c/s1600/ycbcr.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-_mY_LyyqreI/Tdy-cdGqxMI/AAAAAAAAARI/A36-Rkj689c/s1600/ycbcr.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;The &lt;a href="http://create.msdn.com/en-us/home/getting_started"&gt;release of the new Mango tools&lt;/a&gt;&amp;nbsp;brings&amp;nbsp;Windows Phone development on par with Silverlight 4 and will therefore add many great features to the Windows Phone platform. This means it will also contain the Webcam CaptureSource and &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.media.videosink(v=VS.96).aspx"&gt;VideoSink&lt;/a&gt; &lt;a href="http://msdn.microsoft.com/en-us/library/hh202975(v=VS.92).aspx"&gt;API from Silverlight 4&lt;/a&gt;. Additionally it also introduces the new &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.media.filesink(v=VS.96).aspx"&gt;FileSink class&lt;/a&gt; which can be used to record the video stream as MP4 to the Isolated Storage. Most important a new&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.devices.photocamera(v=VS.92).aspx"&gt;PhotoCamera&lt;/a&gt;&amp;nbsp;class with a lot of functionality is present in Mango.&lt;br /&gt;This class is used in the latest &lt;a href="http://kodierer.blogspot.com/2011/05/augmented-mango-slartoolkit-for-windows.html"&gt;SLARToolkit Windows Phone sample&lt;/a&gt; and in some other new projects I'm working on.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Don't&amp;nbsp;Reinvent&amp;nbsp;the Wheel&lt;/b&gt;&lt;br /&gt;The Silverlight 4 webcam API was explained in this &lt;a href="http://kodierer.blogspot.com/2010/06/push-and-pull-silverlight-webcam.html"&gt;detailed blog post&lt;/a&gt; almost a year ago. The techniques and concepts I described there can now also be used with Windows Phone Mango.&lt;br /&gt;The updated&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/hh202956(v=VS.92).aspx"&gt;MSDN documentation&lt;/a&gt;&amp;nbsp;has quite a few articles and samples about the new camera API.&amp;nbsp;My MVP buddy Alex Golesh also has a nice&amp;nbsp;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2011/05/24/windows-phone-mango-what-s-new-camera-part-4-of-8.aspx"&gt;write up about the new Camera API&lt;/a&gt;.&lt;br /&gt;This blog post tries to fill the gaps and provides some information especially about the&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.devices.photocamera(v=VS.92).aspx"&gt;PhotoCamera's&lt;/a&gt;&amp;nbsp;YCrCb capture methods.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;YCbCr vs ARGB&lt;/b&gt;&lt;br /&gt;In the well-known&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/RGB_color_space"&gt;RGB color space&lt;/a&gt;&amp;nbsp;the red, green and blue&amp;nbsp;information is stored in separate&amp;nbsp;components&amp;nbsp;which also contains the redundant luminance data for each channel.&amp;nbsp;In the&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/YCbCr"&gt;YCbCr color space&lt;/a&gt;&amp;nbsp;(or YCrCb) the luminance information is stored in the Y component and the chroma (color) information in the Cb component as blue-difference and in Cr component as red-difference. The RGB-YCbCr conversion can be done with simple addition and multiplication operations. The Y component usually ranges from 0 to 1, Cb and Cr from -0.5 to 0.5.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-_mY_LyyqreI/Tdy-cdGqxMI/AAAAAAAAARI/A36-Rkj689c/s1600/ycbcr.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-_mY_LyyqreI/Tdy-cdGqxMI/AAAAAAAAARI/A36-Rkj689c/s1600/ycbcr.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Y = 0.5, Cr [-0.5, 0.5], Cb[-0.5, 0.5]&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Humans are more sensitive to luminance information than to chroma, therefore the resolution of the color information can be reduced and only the luminance needs to be stored in full resolution.&amp;nbsp;Many digital camera sensors use the YCrCb color space and make use of this reduced chroma information.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;PhotoCamera&lt;/b&gt;&lt;br /&gt;The&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.devices.photocamera(v=VS.92).aspx"&gt;PhotoCamera&lt;/a&gt;&amp;nbsp;class has a lot of useful methods to either&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.devices.photocamera.captureimage(v=VS.92).aspx"&gt;capture a full resolution image&lt;/a&gt;&amp;nbsp;from the camera or to get a smaller (and faster) preview buffer snapshot. The&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.devices.photocamera.getpreviewbuffery(v=VS.92).aspx"&gt;GetPreviewBufferY&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.devices.photocamera.getpreviewbufferycrcb(v=VS.92).aspx"&gt;GetPreviewBufferYCrCb&lt;/a&gt;&amp;nbsp;methods provide the direct data from the camera without a transformation to 32 bit ARGB. Not only is the alpha channel left out in the YCrCb buffer, also the Cr and Cb color components are stored with reduced resolution. This keeps the buffer size smaller and is way faster, but also makes it a bit trickier when the color components (and&amp;nbsp;brightness) need to be extracted from the byte buffer. Fortunately there's the&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.devices.photocamera.ycrcbpixellayout(v=VS.92).aspx"&gt;YCbCrPixelLayout property&lt;/a&gt;&amp;nbsp;which contains alls the offsets, strides and other needed&amp;nbsp;information.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;The&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.devices.photocamera.getpreviewbufferycrcb(v=VS.92).aspx"&gt;GetPreviewBufferYCrCb&lt;/a&gt;&amp;nbsp;method is approximately&amp;nbsp;4 times faster than the&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.devices.photocamera.getpreviewbufferargb32(v=VS.92).aspx"&gt;GetPreviewBufferArgb32&lt;/a&gt;&amp;nbsp;method&amp;nbsp;and also takes a smaller buffer, therefore the YCrCb methods are the way to go when only the&amp;nbsp;luminance&amp;nbsp;data is needed or the&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/YCbCr"&gt;YCbCr color space&lt;/a&gt;&amp;nbsp;can be used for the given scenario. For example many computer vision techniques only need the luminance information for processing.&lt;br /&gt;I like that both color spaces are supported by the API. On mobile devices you need all the performance you can get.&amp;nbsp;I actually helped the Windows Phone camera team with quite a bit feedback to decide about this API design. Very smart people by the way.&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/U_HjjpPue1U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/4366553423113444869/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2011/05/why-is-y-in-windows-phone-mango-camera.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/4366553423113444869" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/4366553423113444869" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/U_HjjpPue1U/why-is-y-in-windows-phone-mango-camera.html" title="Why is a Y in the Windows Phone Mango Camera API" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-_mY_LyyqreI/Tdy-cdGqxMI/AAAAAAAAARI/A36-Rkj689c/s72-c/ycbcr.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2011/05/why-is-y-in-windows-phone-mango-camera.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-3673877053902141193</id><published>2011-05-24T22:18:00.005+02:00</published><updated>2011-05-25T21:04:22.076+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3D" /><category scheme="http://www.blogger.com/atom/ns#" term="Mango" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="Matrix3DEx" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Augmented Reality" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><category scheme="http://www.blogger.com/atom/ns#" term="Computer graphics" /><category scheme="http://www.blogger.com/atom/ns#" term="SLARToolkit" /><category scheme="http://www.blogger.com/atom/ns#" term="Mobile" /><category scheme="http://www.blogger.com/atom/ns#" term="Wp7Dev" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title type="text">Augmented Mango - SLARToolkit for Windows Phone</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-HWgJ5PB48FE/Tdv-KcK2lJI/AAAAAAAAARA/BtJV_6qaGo4/s1600/SLARToolkit_WP_Mango_Sample_Screenshot_192x192.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-HWgJ5PB48FE/Tdv-KcK2lJI/AAAAAAAAARA/BtJV_6qaGo4/s1600/SLARToolkit_WP_Mango_Sample_Screenshot_192x192.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;The beta of the &lt;a href="http://create.msdn.com/en-us/home/getting_started"&gt;new Windows Phone Developer Tools&lt;/a&gt; was just publicly released. The update with the codename "Mango" comes with many new APIs and will finally contain an API for real-time camera access what a lot of developers have been asking for.&amp;nbsp;The new runtime gives us the needed&amp;nbsp;functionality&amp;nbsp;to implement many cool scenarios. One of these&amp;nbsp;scenarios&amp;nbsp;is &lt;a href="http://en.wikipedia.org/wiki/Augmented_reality"&gt;Augmented Reality&lt;/a&gt;, which leads to my open source Silverlight Augmented Reality Toolkit (&lt;a href="http://slartoolkit.codeplex.com/"&gt;SLARToolkit&lt;/a&gt;).&lt;br /&gt;This post announces the new Windows Phone version of&amp;nbsp;&lt;a href="http://slartoolkit.codeplex.com/"&gt;SLARToolkit&lt;/a&gt;&amp;nbsp;and also provides a sample. If you're one of those lucky people with a Mango-enabled device you can download the XAP &lt;a href="http://dl.dropbox.com/u/2681028/CodeplexData/SLARToolkit/Samples/SLARToolKitWinPhoneSample/SLARToolKitWinPhoneSample.xap"&gt;here&lt;/a&gt; or just watch a&amp;nbsp;video&amp;nbsp;instead.&lt;br /&gt;&lt;br /&gt;The SLARToolkit project description from the&amp;nbsp;&lt;a href="http://slartoolkit.codeplex.com/"&gt;CodePlex site&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;i&gt;SLARToolkit is a flexible marker-based Augmented Reality library for Silverlight and Windows Phone with the aim to make real time&amp;nbsp;&lt;a class="externalLink" href="http://en.wikipedia.org/wiki/Augmented_Reality"&gt;Augmented Reality&lt;/a&gt;&amp;nbsp;applications with Silverlight as easy and fast as possible. It can be used with Silverlight's Webcam API or with any other CaptureSource, WriteableBitmap or with the Windows Phone's PhotoCamera. SLARTookit is based on the established&amp;nbsp;&lt;a class="externalLink" href="http://nyatla.jp/nyartoolkit"&gt;NyARToolkit&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a class="externalLink" href="http://en.wikipedia.org/wiki/ARToolKit"&gt;ARToolkit&lt;/a&gt;.&amp;nbsp;&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;Demo&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;The &lt;a href="http://dl.dropbox.com/u/2681028/CodeplexData/SLARToolkit/Samples/SLARToolKitWinPhoneSample/SLARToolKitWinPhoneSample.xap"&gt;sample XAP&lt;/a&gt; can be deployed to a Mango-enabled device (tested with build 7629). Alternatively there's also a video of the new sample embedded below.&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;If you want to try it yourself you need do download the&amp;nbsp;&lt;a class="externalLink" href="http://dl.dropbox.com/u/2681028/CodeplexData/SLARToolkit/Marker/Marker_SLAR_16x16segments_80width.pdf"&gt;SLAR&lt;/a&gt;&amp;nbsp;and / or&amp;nbsp;&lt;a class="externalLink" href="http://dl.dropbox.com/u/2681028/CodeplexData/SLARToolkit/Marker/Marker_L_16x16segments_80width.pdf"&gt;L&lt;/a&gt;&amp;nbsp;marker, print them and point the camera toward these. The marker(s) should be printed non-scaled at the original size (80 x 80 mm) and centered for a small white border. As an alternative it's also possible to open a marker file on a different device and to use the device's screen as marker.&lt;br /&gt;See the SLARToolkit&amp;nbsp;&lt;a href="http://slartoolkit.codeplex.com/wikipage?title=Markers&amp;amp;referringTitle=Home"&gt;Markers&lt;/a&gt;&amp;nbsp;documentation for more details.&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: -webkit-auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-wmFPyAuBmzw/TdqvFUmIBwI/AAAAAAAAAQ8/CQdk9hyKOHQ/s1600/SLAR_Text.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://1.bp.blogspot.com/-wmFPyAuBmzw/TdqvFUmIBwI/AAAAAAAAAQ8/CQdk9hyKOHQ/s640/SLAR_Text.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-4FRMOxJgCnw/Tdv-ok8DmgI/AAAAAAAAARE/rZ64jjJXRBM/s1600/SLARToolkit_WP_Mango_Sample_Image_Overlay.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://4.bp.blogspot.com/-4FRMOxJgCnw/Tdv-ok8DmgI/AAAAAAAAARE/rZ64jjJXRBM/s640/SLARToolkit_WP_Mango_Sample_Image_Overlay.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;Video&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;I've recorded a short video of the new sample with my Samsung Omnia 7. It's a bit blurry, but it demonstrates how well the sample works even on this quite old ASUS prototype, which's camera pipeline seems a bit slow.&lt;br /&gt;The video is also available at&amp;nbsp;&lt;a href="http://www.youtube.com/watch?v=cW7Ub69EtPU"&gt;YouTube&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;iframe frameborder="0" height="420" src="http://player.vimeo.com/video/24184014?portrait=0" width="560"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Background music is &lt;a href="http://www.mosaik.se/leandi/"&gt;Melo&lt;/a&gt;&amp;nbsp;by Mosaik&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: left;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;This demo shows how the new Windows Phone Mango real-time camera API can be used &amp;nbsp;to&amp;nbsp;augment&amp;nbsp;the reality with the help of the&amp;nbsp;&lt;a href="http://slartoolkit.codeplex.com/"&gt;SLARToolkit&lt;/a&gt;. This can be nice for educational projects and it's actually no problem&amp;nbsp;&lt;a href="http://kodierer.blogspot.com/2010/02/slartoolkit-silverlight-augmented.html"&gt;to add&lt;/a&gt;&amp;nbsp;correctly transformed videos or other content to the demo.&lt;br /&gt;The demo demonstrates just some basic UIElements like a TextBox and an Image control. Mango will also enable the combination of Silverlight and XNA, which means that nice 3D AR games can be developed with the help of the SLARToolkit.&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;How it works&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;This sample uses the new &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.devices.photocamera(v=VS.92).aspx"&gt;PhotoCamera&lt;/a&gt; and a timer to constantly get a snapshot of the real-time camera stream. This snapshot is then passed to the SLARToolkit algorithms to get the 3D spatial information of the marker. The computed detection results are used to transform the elements&amp;nbsp;perspectively&amp;nbsp;correct.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: c-sharp;"&gt;protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)&lt;br /&gt;{&lt;br /&gt;   base.OnNavigatedTo(e);&lt;br /&gt;&lt;br /&gt;   // Initialize the webcam&lt;br /&gt;   photoCamera = new PhotoCamera();&lt;br /&gt;   photoCamera.Initialized += PhotoCameraInitialized;&lt;br /&gt;   isInitialized = false;&lt;br /&gt;&lt;br /&gt;   // Fill the Viewport Rectangle with the VideoBrush&lt;br /&gt;   var vidBrush = new VideoBrush();&lt;br /&gt;   vidBrush.SetSource(photoCamera);&lt;br /&gt;   Viewport.Fill = vidBrush;&lt;br /&gt;&lt;br /&gt;   // Start timer&lt;br /&gt;   dispatcherTimer = new DispatcherTimer { Interval = TimeSpan.FromMilliseconds(50) };&lt;br /&gt;   dispatcherTimer.Tick += (sender, e1) =&amp;gt; Detect();&lt;br /&gt;   dispatcherTimer.Start();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The PhotoCamera instance is set up in the OnNavigatedTo event handler of the page and the DispatcherTimer is started. The timer will constantly call the Detect method every 50 milliseconds. Additionally a viewfinder Rectangle is filled with a VideoBrush which in turn has the photoCamera video stream set as source.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: c-sharp;"&gt;void Detect()&lt;br /&gt;{&lt;br /&gt;   if (!isInitialized)&lt;br /&gt;   {&lt;br /&gt;      return;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   // Update buffer size&lt;br /&gt;   var pixelWidth = photoCamera.PreviewBufferResolution.Width;&lt;br /&gt;   var pixelHeight = photoCamera.PreviewBufferResolution.Height;&lt;br /&gt;   if (buffer == null || buffer.Length != pixelWidth * pixelHeight)&lt;br /&gt;   {&lt;br /&gt;      buffer = new byte[pixelWidth * pixelHeight];&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   // Grab snapshot&lt;br /&gt;   photoCamera.GetPreviewBufferY(buffer);&lt;br /&gt;&lt;br /&gt;   // Detect&lt;br /&gt;   var dr = arDetector.DetectAllMarkers(buffer, pixelWidth, pixelHeight);&lt;br /&gt;&lt;br /&gt;   // Calculate the projection matrix&lt;br /&gt;   if (dr.HasResults)&lt;br /&gt;   {&lt;br /&gt;      // Center at origin of the 256x256 controls&lt;br /&gt;      var centerAtOrigin = Matrix3DFactory.CreateTranslation(-128, -128, 0);&lt;br /&gt;            &lt;br /&gt;      // Swap the y-axis and scale down by half&lt;br /&gt;      var scale = Matrix3DFactory.CreateScale(0.5, -0.5, 0.5);&lt;br /&gt;&lt;br /&gt;      // Calculate the complete transformation matrix based on the first detection result&lt;br /&gt;      var world = centerAtOrigin * scale * dr[0].Transformation;&lt;br /&gt;&lt;br /&gt;      // Viewport transformation&lt;br /&gt;      var viewport = Matrix3DFactory.CreateViewportTransformation(pixelWidth, pixelHeight);&lt;br /&gt;&lt;br /&gt;      // Calculate the final transformation matrix by using the camera projection matrix &lt;br /&gt;      var m = Matrix3DFactory.CreateViewportProjection(world, Matrix3D.Identity, arDetector.Projection, viewport);&lt;br /&gt;&lt;br /&gt;      // Apply the final transformation matrix to the controls&lt;br /&gt;      var matrix3DProjection = new Matrix3DProjection { ProjectionMatrix = m };&lt;br /&gt;      Txt.Projection = matrix3DProjection;&lt;br /&gt;      Img.Projection = matrix3DProjection;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;A snapshot of the current preview buffer is taken in the Detect method using the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.devices.photocamera.getpreviewbuffery(v=VS.92).aspx"&gt;GetPreviewBufferY&lt;/a&gt; method. This method fills up a byte buffer with the luminance data of the current viewfinder frame. This buffer is then passed to the SLARToolkit's MarkerDetector Detect method, which returns the detected marker information. This transformation data is then used to transform the UIElement perspectively correct in 3D.&lt;br /&gt;Read more about the PhotoCamera's YCbCr methods in &lt;a href="http://kodierer.blogspot.com/2011/05/why-is-y-in-windows-phone-mango-camera.html"&gt;this blog post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: c-sharp;"&gt;void PhotoCameraInitialized(object sender, CameraOperationCompletedEventArgs e)&lt;br /&gt;{&lt;br /&gt;   //  Initialize the Detector&lt;br /&gt;   arDetector = new GrayBufferMarkerDetector();&lt;br /&gt;&lt;br /&gt;   // Load the marker pattern. It has 16x16 segments and a width of 80 millimeters&lt;br /&gt;   var marker = Marker.LoadFromResource("data/Marker_SLAR_16x16segments_80width.pat", 16, 16, 80);&lt;br /&gt;&lt;br /&gt;   // The perspective projection has the near plane at 1 and the far plane at 4000&lt;br /&gt;   arDetector.Initialize(photoCamera.PreviewBufferResolution.Width, photoCamera.PreviewBufferResolution.Height, 1, 4000, marker);&lt;br /&gt;&lt;br /&gt;   isInitialized = true;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The SLARToolkit's GrayBufferMarkerDetector is created and set up in the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.devices.camera.initialized(v=VS.92).aspx"&gt;PhotoCamera's Initialized&lt;/a&gt; event handler. The brand new GrayBufferMarkerDetector uses the byte buffer with luminance data directly without the need of an ARGB 32 bit pixel conversion.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Checkout the &lt;a href="http://slartoolkit.codeplex.com/"&gt;source code at CodePlex&lt;/a&gt; if you want to see all the details of the sample which were left out for clarity.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;Download it, build your app and augment your reality&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_EtiC5s1ztXY/S4QyAZcMegI/AAAAAAAAAKI/T8kjtsi6pMU/s1600-h/SLARToolKit_logo.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_EtiC5s1ztXY/S4QyAZcMegI/AAAAAAAAAKI/T8kjtsi6pMU/s1600/SLARToolKit_logo.jpg" style="cursor: move;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;The open source&amp;nbsp;&lt;a href="http://slartoolkit.codeplex.com/"&gt;SLARToolkit library and all samples are hosted at CodePlex&lt;/a&gt;. If you have any comments, questions or suggestions don't hesitate and write a comment, use the&amp;nbsp;&lt;a href="http://slartoolkit.codeplex.com/WorkItem/List.aspx"&gt;Issue Tracker&lt;/a&gt;&amp;nbsp;on the CodePlex site or contact me&amp;nbsp;&lt;a href="http://flavors.me/rschu"&gt;via any other media&lt;/a&gt;.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Have fun with the library and please keep me updated if you use it anywhere so I can put a link on the project site.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/QBuC2Nifs8s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/3673877053902141193/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2011/05/augmented-mango-slartoolkit-for-windows.html#comment-form" title="16 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/3673877053902141193" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/3673877053902141193" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/QBuC2Nifs8s/augmented-mango-slartoolkit-for-windows.html" title="Augmented Mango - SLARToolkit for Windows Phone" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-HWgJ5PB48FE/Tdv-KcK2lJI/AAAAAAAAARA/BtJV_6qaGo4/s72-c/SLARToolkit_WP_Mango_Sample_Screenshot_192x192.jpg" height="72" width="72" /><thr:total>16</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2011/05/augmented-mango-slartoolkit-for-windows.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-5192916327781778953</id><published>2011-04-19T00:03:00.002+02:00</published><updated>2011-04-19T00:05:37.032+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="WriteableBitmapEx" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><category scheme="http://www.blogger.com/atom/ns#" term="Computer graphics" /><category scheme="http://www.blogger.com/atom/ns#" term="Wp7Dev" /><category scheme="http://www.blogger.com/atom/ns#" term="NuGet" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><category scheme="http://www.blogger.com/atom/ns#" term="WriteableBitmap" /><title type="text">WriteableBitmapEx goes NuGet</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-XZ6szsJIabU/TRyM653SPtI/AAAAAAAAAPs/FQyB6v08SoA/s1600/wbx_announcement.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-XZ6szsJIabU/TRyM653SPtI/AAAAAAAAAPs/FQyB6v08SoA/s1600/wbx_announcement.png" /&gt;&lt;/a&gt;&lt;/div&gt;The WriteableBitmapEx library is now available as a &lt;a href="http://nuget.org/List/Packages/WriteableBitmapEx"&gt;NuGet package&lt;/a&gt;. The package contains the Silverlight and the Windows Phone binaries. The sources and the PDB are also available at &lt;a href="http://symbolsource.org/"&gt;SymbolSource.org&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://nuget.codeplex.com/"&gt;NuGet&lt;/a&gt; is a neat package management system for the .Net platform which makes the life of a .Net developer much easier. If you haven't tried NuGet until now, you should definitely &lt;a href="http://nuget.org/"&gt;give it a try&lt;/a&gt;. I'm sure you won't regret it.&amp;nbsp;To install NuGet, open Visual Studio's Tools -&amp;gt; Extension Manager and search the Online Gallery for NuGet. You can then open a project, right click the References and select "Add Library Package Reference".&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/xK4493JUR40" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/5192916327781778953/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2011/04/writeablebitmapex-goes-nuget.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/5192916327781778953" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/5192916327781778953" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/xK4493JUR40/writeablebitmapex-goes-nuget.html" title="WriteableBitmapEx goes NuGet" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-XZ6szsJIabU/TRyM653SPtI/AAAAAAAAAPs/FQyB6v08SoA/s72-c/wbx_announcement.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2011/04/writeablebitmapex-goes-nuget.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-4835482710355290827</id><published>2011-04-13T21:29:00.000+02:00</published><updated>2011-04-13T21:29:48.519+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3D" /><category scheme="http://www.blogger.com/atom/ns#" term="Webcam" /><category scheme="http://www.blogger.com/atom/ns#" term="Matrix3DEx" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight 5" /><category scheme="http://www.blogger.com/atom/ns#" term="Augmented Reality" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><category scheme="http://www.blogger.com/atom/ns#" term="mix11" /><category scheme="http://www.blogger.com/atom/ns#" term="Computer graphics" /><category scheme="http://www.blogger.com/atom/ns#" term="SLARToolkit" /><category scheme="http://www.blogger.com/atom/ns#" term="SL53D" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title type="text">Silverlight 5 3D + SLARToolkit Augmented Reality = Win!</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-CE8k4z6cJPM/TaNer3pGv8I/AAAAAAAAAQg/xVwwcHx07Ac/s1600/SLARToolkit_SL5_Sample_Sun.Earth.Moon_192x192.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-CE8k4z6cJPM/TaNer3pGv8I/AAAAAAAAAQg/xVwwcHx07Ac/s1600/SLARToolkit_SL5_Sample_Sun.Earth.Moon_192x192.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;It's almost been a year since &lt;a href="http://kodierer.blogspot.com/2010/05/slartoolkit-beginners-guide.html"&gt;I wrote a sample&lt;/a&gt; for my open source Silverlight Augmented Reality Toolkit - &lt;a href="http://slartoolkit.codeplex.com/"&gt;SLARToolkit&lt;/a&gt;. The release of the new Silverlight 5 hardware&amp;nbsp;accelerated&amp;nbsp;3D API was a nice occasion to finally make a new one.&lt;br /&gt;In my &lt;a href="http://kodierer.blogspot.com/2011/04/xna-for-web-silverlight-5.html"&gt;last blog post&lt;/a&gt; I wrote a summary of all the &lt;a href="http://www.silverlight.net/getstarted/silverlight-5-beta/"&gt;Silverlight 5 beta&lt;/a&gt; features and some notes about the new low-level, XNA 3D API.&lt;br /&gt;This post provides the new demo for SLARToolkit which leverages this fast GPU-based rendering to draw some nice effects with 60 frames per second.&amp;nbsp;You can try the live sample if you have the&amp;nbsp;&lt;a href="http://www.silverlight.net/getstarted/silverlight-5-beta/"&gt;Silverlight 5 beta&lt;/a&gt;&amp;nbsp;installed or watch a &lt;a href="http://vimeo.com/22168601"&gt;video&lt;/a&gt; instead.&lt;br /&gt;&lt;br /&gt;The SLARToolkit project description from the&amp;nbsp;&lt;a href="http://slartoolkit.codeplex.com/"&gt;CodePlex site&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;i&gt;SLARToolkit is a flexible Augmented Reality library for Silverlight with the aim to make real time&amp;nbsp;&lt;a class="externalLink" href="http://en.wikipedia.org/wiki/Augmented_Reality"&gt;Augmented Reality&lt;/a&gt;&amp;nbsp;applications with Silverlight as easy and fast as possible. It can be used with Silverlight's Webcam API or with any other CaptureSource or a WriteableBitmap. SLARTookit is based on the established&amp;nbsp;&lt;a class="externalLink" href="http://nyatla.jp/nyartoolkit"&gt;NyARToolkit&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a class="externalLink" href="http://en.wikipedia.org/wiki/ARToolKit"&gt;ARToolkit&lt;/a&gt;.&amp;nbsp;&lt;/i&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;Live&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;A webcam and at least the &lt;a href="http://www.silverlight.net/getstarted/silverlight-5-beta/"&gt;Silverlight 5 beta runtime&lt;/a&gt; must be installed to run the sample. It's available &lt;a href="http://www.silverlight.net/getstarted/silverlight-5-beta/"&gt;here&lt;/a&gt;. Alternatively there is also a video of the new sample embedded below.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;If you want to try it yourself you need do download the&amp;nbsp;&lt;a class="externalLink" href="http://dl.dropbox.com/u/2681028/CodeplexData/SLARToolkit/Marker/Marker_SLAR_16x16segments_80width.pdf"&gt;SLAR&lt;/a&gt;&amp;nbsp;and / or&amp;nbsp;&lt;a class="externalLink" href="http://dl.dropbox.com/u/2681028/CodeplexData/SLARToolkit/Marker/Marker_L_16x16segments_80width.pdf"&gt;L&lt;/a&gt;&amp;nbsp;marker, print them and hold them in front of the camera. The marker(s) should be printed non-scaled at the original size (80 x 80 mm) and centered for a small white border. As an alternative it's also possible to open a marker file on a mobile device and to use the device's screen as marker. Also make sure the camera is set up properly and the scene is illuminated well without hard shadows. See the SLARToolkit&amp;nbsp;&lt;a href="http://slartoolkit.codeplex.com/wikipage?title=Markers&amp;amp;referringTitle=Home"&gt;Markers&lt;/a&gt;&amp;nbsp;documentation for more details.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;a href="http://dl.dropbox.com/u/2681028/CodeplexData/SLARToolkit/Samples/SLARToolKit3DSample/SLARToolKit3DSampleTestPage.html"&gt;Open the sample in a new page.&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-dvn9yujQANA/TaNoKdowqNI/AAAAAAAAAQo/NMiANeUNVkA/s1600/SLARToolkit_SL5_Sample_Sun.Earth.Moon.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="572" src="http://2.bp.blogspot.com/-dvn9yujQANA/TaNoKdowqNI/AAAAAAAAAQo/NMiANeUNVkA/s640/SLARToolkit_SL5_Sample_Sun.Earth.Moon.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Simply press the "Start Fun" Button to start the webcam. The size of the objects can be changed with the "Scale" Sliders. The "Flip x-axis" Checkbox could be used to flip the video (the webcam output is mirror-reversed by default). Click the "Glass" Checkbox to apply a glass effect to the sun model.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;If you click the "Start Fun" Button for the first time you need to give your permission for the capturing. This application uses the default Silverlight capture device. You can specify the video and audio devices that are used by default with the Silverlight Configuration. Just press the right mouse button over the application, click "Silverlight" in the context menu and select the "Webcam / Mic" tab to set them.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;Video&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;I've recorded a short video of the new sample with&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Microsoft_Expression_Encoder"&gt;Expression Encoder&lt;/a&gt;'s Screen Capture feature. Please keep in mind that the screen recording software eats up a lot of resources while recording and that the actual frame rate is even better. The video is also available at &lt;a href="http://www.youtube.com/watch?v=-Y7x2TTJd9o"&gt;YouTube&lt;/a&gt;.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;iframe frameborder="0" height="448" src="http://player.vimeo.com/video/22168601?portrait=0" width="560"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Background music is &lt;a href="https://8bc.org/music/Alpha+C/Neon+Aurora/_/action=like"&gt;Neon Aurora&lt;/a&gt; by Alpha C&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;This demo shows how the new Silverlight 5 3D API can be used &amp;nbsp;to&amp;nbsp;augment&amp;nbsp;the reality with the help of SLARToolkit. It also demonstrates how the 3D DrawingSurface can be combined with the webcam video stream and overlaid with&amp;nbsp;ordinary&amp;nbsp;TextBoxes. This can be nice for educational projects and it's actually no problem &lt;a href="http://kodierer.blogspot.com/2010/02/slartoolkit-silverlight-augmented.html"&gt;to add&lt;/a&gt; correctly transformed videos or other content to the demo.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;How it works&lt;/b&gt;&lt;/div&gt;This sample uses the webcam video stream which is used to fill a Rectangle shape, the video stream is also&amp;nbsp;constantly&amp;nbsp;captured and fed to the SLARToolkit&amp;nbsp;&lt;a href="http://slartoolkit.codeplex.com/wikipage?title=Marker%20Detectors&amp;amp;referringTitle=Documentation"&gt;BitmapMarkerDetector&lt;/a&gt;&amp;nbsp;to detect the markers. The detection result contains a transformation matrix for each found marker which is then used to transform the 3D objects and the TextBoxes.&lt;br /&gt;A couple of vertex and pixel &lt;a href="http://en.wikipedia.org/wiki/Shader"&gt;shaders&lt;/a&gt; are used to get the desired effects. Techniques like &lt;a href="http://en.wikipedia.org/wiki/Phong_shading"&gt;Phong shading&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Bump_mapping"&gt;Bump mapping&lt;/a&gt;&amp;nbsp;and &lt;a href="http://web.cs.wpi.edu/~matt/courses/cs563/talks/texture/texture/refract.html"&gt;Refraction mapping&lt;/a&gt; (glass) were implemented. The snapshots from the webcam are passed as a texture to the refraction pixel shader to simulate the glass effect.&lt;br /&gt;See the source code if you're&amp;nbsp;interested&amp;nbsp;in the nitty-gritty details. Please note that I wrote an introduction to Pixel Shaders for &lt;a href="http://channel9.msdn.com/coding4fun/articles/SilverShader--Introduction-to-Silverlight-and-WPF-Pixel-Shaders"&gt;Coding4Fun&lt;/a&gt;&amp;nbsp;a while ago.&lt;br /&gt;The current Silverlight 5 beta doesn't implement RenderTargets, therefore effects like&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Bloom_(shader_effect)"&gt;bloom&lt;/a&gt; aren't really possible with the limitations of the Shader Model 2. You can add a faded &lt;a href="http://en.wikipedia.org/wiki/Sprite_(computer_graphics)"&gt;billboard&lt;/a&gt; around the sun, but it wouldn't look that nice and when RenderTargets are added we can do way more nice effects in future releases of Silverlight 5.&lt;br /&gt;I also added a new simple anti-jittering&amp;nbsp;functionality&amp;nbsp;to SLARToolkit to prevent the jiggling that mostly&amp;nbsp;occurred&amp;nbsp;due to the varying lightning conditions and noise in the video stream.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Credits&lt;/b&gt;&lt;br /&gt;The SolarWind sample by the Silverlight team was used as a base and extended. The sample uses earth textures from the NASA.&amp;nbsp;The pixel shader for the sun uses textures and concepts from &lt;a href="http://www.mathematik.uni-marburg.de/~menzel/index.php?seite=tutorials&amp;amp;id=1"&gt;an article&lt;/a&gt; by Nicolas Menzel. The moon textures are from the &lt;a href="http://www.celestiamotherlode.net/catalog/moon.php"&gt;Celestia&lt;/a&gt; project.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Download it, build your app and augment your reality&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_EtiC5s1ztXY/S4QyAZcMegI/AAAAAAAAAKI/T8kjtsi6pMU/s1600-h/SLARToolKit_logo.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_EtiC5s1ztXY/S4QyAZcMegI/AAAAAAAAAKI/T8kjtsi6pMU/s1600/SLARToolKit_logo.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;The open source &lt;a href="http://slartoolkit.codeplex.com/"&gt;SLARToolkit library and all samples are hosted at CodePlex&lt;/a&gt;. If you have any comments, questions or  suggestions don't hesitate and write a comment, use the &lt;a href="http://slartoolkit.codeplex.com/WorkItem/List.aspx"&gt;Issue Tracker&lt;/a&gt;  on the CodePlex site or contact me &lt;a href="http://flavors.me/rschu"&gt;via any other media&lt;/a&gt;.&lt;br /&gt;Have fun with the library and please keep me updated if you use it anywhere so I can put a link on the project site.&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/CUIwm5t3SY0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/4835482710355290827/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2011/04/silverlight-5-3d-slartoolkit-augmented.html#comment-form" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/4835482710355290827" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/4835482710355290827" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/CUIwm5t3SY0/silverlight-5-3d-slartoolkit-augmented.html" title="Silverlight 5 3D + SLARToolkit Augmented Reality = Win!" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-CE8k4z6cJPM/TaNer3pGv8I/AAAAAAAAAQg/xVwwcHx07Ac/s72-c/SLARToolkit_SL5_Sample_Sun.Earth.Moon_192x192.jpg" height="72" width="72" /><thr:total>8</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2011/04/silverlight-5-3d-slartoolkit-augmented.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-563071785757928434.post-4952993845304242505</id><published>2011-04-13T19:49:00.004+02:00</published><updated>2011-04-13T21:40:43.229+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3D" /><category scheme="http://www.blogger.com/atom/ns#" term="mix11" /><category scheme="http://www.blogger.com/atom/ns#" term="Computer graphics" /><category scheme="http://www.blogger.com/atom/ns#" term="SL53D" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight 5" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><title type="text">XNA for the Web - Silverlight 5</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-fzNyqxGfguo/TaNEFqXGlCI/AAAAAAAAAQY/6DEaKXErCFk/s1600/Earth_Moon_192x192.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-fzNyqxGfguo/TaNEFqXGlCI/AAAAAAAAAQY/6DEaKXErCFk/s1600/Earth_Moon_192x192.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Many great new things were announced during the second keynote at Microsoft's &lt;a href="http://live.visitmix.com/"&gt;MIX11 conference&lt;/a&gt;. One of it was the Silverlight 5 beta which is available for download &lt;a href="http://www.silverlight.net/getstarted/silverlight-5-beta/"&gt;here&lt;/a&gt;.&lt;br /&gt;The new features are just awesome and many of them were &lt;a href="http://dotnet.uservoice.com/forums/4325-silverlight-feature-suggestions"&gt;requested by the community&lt;/a&gt;. As usual Tim Heuer's &lt;a href="http://timheuer.com/blog/archive/2011/04/13/whats-new-in-silverlight-5-a-guide.aspx"&gt;great blog post&lt;/a&gt; covers all the new goodies in detail and provides videos and source code for most of them.&amp;nbsp;Kudos to the Silverlight team for releasing another great version.&lt;br /&gt;My blog post contains a summary of all the new features the Silverlight 5 beta ships and provides some notes about the new 3D API. The &lt;a href="http://kodierer.blogspot.com/2011/04/silverlight-5-3d-slartoolkit-augmented.html"&gt;next blog post&lt;/a&gt; will bring a new &lt;a href="http://slartoolkit.codeplex.com/"&gt;SLARToolkit&lt;/a&gt;&amp;nbsp;3D demo.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Features&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;XNA 3D Graphics API&lt;/li&gt;&lt;li&gt;Improved Graphics stack – The graphics stack has been re-architected to bring over improvements from WP7, such as Independent Animations.&lt;/li&gt;&lt;li&gt;Hardware video decode for H.264 playback.&lt;/li&gt;&lt;li&gt;Multi-core background JIT support for improved startup performance.&lt;/li&gt;&lt;li&gt;Realtime Sound (low-latency Audio)&lt;/li&gt;&lt;li&gt;Variable Speed Playback (“Trick Play”)&lt;/li&gt;&lt;li&gt;XAML Binding Debugging&lt;/li&gt;&lt;li&gt;Multiple Window Support&lt;/li&gt;&lt;li&gt;Ancestor RelativeSource Binding&lt;/li&gt;&lt;li&gt;Implicit DataTemplates&lt;/li&gt;&lt;li&gt;ClickCount&lt;/li&gt;&lt;li&gt;Binding on Style Setter&lt;/li&gt;&lt;li&gt;Linked Text Containers&lt;/li&gt;&lt;li&gt;Custom Markup Extensions&lt;/li&gt;&lt;li&gt;ComboBox type ahead with text searching.&lt;/li&gt;&lt;li&gt;Full keyboard support in full-screen for trusted in-browser applications, enables richer kiosk and media viewing applications in-browser.&lt;/li&gt;&lt;li&gt;Default filename in SaveFileDialog – Specify a default filename when you launch the SaveFileDialog.&lt;/li&gt;&lt;li&gt;Unrestricted filesystem access – trusted applications can Read write to files in any directory on the filesystem.&lt;/li&gt;&lt;li&gt;More performance optimizations:&lt;/li&gt;&lt;li&gt;XAML Parser performance optimizations.&lt;/li&gt;&lt;li&gt;Network Latency optimizations.&lt;/li&gt;&lt;li&gt;Text layout performance improvements.&lt;/li&gt;&lt;li&gt;Hardware acceleration is enabled in windowless mode with Internet Explorer 9.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Find &lt;a href="http://www.microsoft.com/silverlight/future/"&gt;more details&lt;/a&gt; at the Silverlight site and read &lt;a href="http://johnpapa.net/"&gt;John Papa's&lt;/a&gt; and &lt;a href="http://10rem.net/blog/2011/04/13/announcing-the-silverlight-5-beta-release-and-the-silverlightnet-redesign"&gt;Pete Brown's&lt;/a&gt; blog posts.&lt;/div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;XNA for the Web&lt;/b&gt;&lt;br /&gt;One of the &lt;a href="http://dotnet.uservoice.com/forums/4325-silverlight-feature-suggestions/suggestions/310787-3d-support?ref=title"&gt;topmost requested features&lt;/a&gt;&amp;nbsp;at the Silverlight Uservoice site was hardware accelerated 3D graphics.&amp;nbsp;The Silverlight team listened closely and added an&amp;nbsp;immediate&amp;nbsp;mode,&amp;nbsp;low-level, &amp;nbsp;XNA 3D API to Silverlight 5. An&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Immediate_mode"&gt;immediate mode&lt;/a&gt; API offers&amp;nbsp;functionality&amp;nbsp;to render graphics directly to the graphics interface without keeping a list of the objects. A &lt;a href="http://en.wikipedia.org/wiki/Retained_mode"&gt;retained mode&lt;/a&gt; API like WPF 3D on the other hand keeps an internal list of the object graph. An&amp;nbsp;immediate mode API is a great choice since it provides the maximum control over the rendering and mostly results in superior performance compared to retained mode rendering.&lt;br /&gt;The Silverlight 5 3D API&amp;nbsp;doesn't contain all the&amp;nbsp;higher-level&amp;nbsp;classes one might know from the &lt;a href="http://msdn.microsoft.com/en-us/library/bb200104.aspx"&gt;XNA Game Studio&lt;/a&gt;. The Content Pipeline, the SpriteBatch class and others were left out. I assume this decision was made to keep the footprint of the Silverlight runtime small. However, the team added all the needed core functionality; features like the SpriteBatch can be build on top of it by the community. My Silverlight MVP&amp;nbsp;friend&amp;nbsp;&lt;a href="http://blogs.silverarcade.com/silverlight-games-101/"&gt;Bill Reiss&lt;/a&gt;&amp;nbsp;is already working on a &lt;a href="http://blogs.silverarcade.com/silverlight-games-101/13/silverlight-silverlight-5-takes-2d-silverlight-game-development-to-the-next-level/"&gt;SpriteBatch version for Silverlight 5&lt;/a&gt;.&lt;br /&gt;The new GPU&amp;nbsp;accelerated&amp;nbsp;3D API gives us Silverlight developers the core XNA functionality with&amp;nbsp;shaders and&amp;nbsp;vertex rendering inside the browser! Shaders aren't easy for most non-graphics programmers, but they give us a huge flexibility and we can build various higher levels on top of the new 3D API.&lt;br /&gt;You can render some pretty impressive things with the new Silverlight 5 3D API and it's possible to draw millions of triangles on the GPU without almost no CPU load.&lt;br /&gt;&lt;br /&gt;Here's a sneak peek at the &lt;a href="http://kodierer.blogspot.com/2011/04/silverlight-5-3d-slartoolkit-augmented.html"&gt;new SLARToolkit demo&lt;/a&gt; which also contains a simple real-time glass effect.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-hbsci2s1x0c/TaNI0aStg5I/AAAAAAAAAQc/bmsJ2JtoEpY/s1600/SLARToolkit_SL5_Sample_Glass.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: left;"&gt;&lt;img border="0" height="496" src="http://4.bp.blogspot.com/-hbsci2s1x0c/TaNI0aStg5I/AAAAAAAAAQc/bmsJ2JtoEpY/s640/SLARToolkit_SL5_Sample_Glass.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Silverlight Integration&lt;/b&gt;&lt;br /&gt;The 3D API contains a control called the DrawingSurface, which is basically a rendering surface or a 3D Canvas if you will. The DrawingSurface has the Draw event which is raised for every frame to draw. The event is fired on a render thread which runs in parallel to the UI thread. This is an important concept&amp;nbsp;introduced&amp;nbsp;with Silverlight 5.&lt;br /&gt;Inside a Draw event handler the states and shaders are set and the&amp;nbsp;vertex and index buffers&amp;nbsp;are passed to the GPU for rendering. The vertex and pixel &lt;a href="http://en.wikipedia.org/wiki/Shader"&gt;shaders&lt;/a&gt;&amp;nbsp;implement the lightning model and define how the vertices are rendered. The current Silverlight 5 3D beta only supports Shader Model 2, but this will probably change in a future release, but even with Shader Model 2 many neat lightning models and effects can be implemented. You will find some nice effects in the&amp;nbsp;new&amp;nbsp;&lt;a href="http://kodierer.blogspot.com/2011/04/silverlight-5-3d-slartoolkit-augmented.html"&gt;SLARToolkit&amp;nbsp;demo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Check out the Silverlight 5 3D samples if you want to learn more about the new 3D API. If you're not familiar with 3D graphics concepts or just want to make your life easier, then I strongly recommend to give the 3D engine &lt;a href="http://balder.codeplex.com/"&gt;Balder&lt;/a&gt; a try. It's a fantastic open source engine by my good Silverlight MVP friend &lt;a href="http://www.ingebrigtsen.info/"&gt;Einar Ingebrigtsen&lt;/a&gt;. You just need to write a couple lines of XAML and you're good to go. Balder has built-in model loaders to load complex 3D models and Einar provides a big sample library. He also&amp;nbsp;brought the engine to a few more platforms like Windows Phone 7, OpenGL and has even a neat software rendering fallback. Read his blog post &lt;a href="http://www.ingebrigtsen.info/post/2011/04/13/Silverlight-5-and-Balder.aspx"&gt;here&lt;/a&gt;.&lt;br /&gt;Another Silverlight MVP friend of mine, Andy Beaulieu made a very cool demo using Balder and a 3D physics engine. He &lt;a href="http://www.andybeaulieu.com/Home/tabid/67/EntryID/216/Default.aspx"&gt;blogged about it&lt;/a&gt; and even released the 3D physics engine as &lt;a href="http://3dphysics.codeplex.com/"&gt;open source&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;&lt;div style="display: inline !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;The beta of the 3D API is&amp;nbsp;missing some essential things like RenderTargets at the moment, but it's just a beta and more stuff might be announced at the&amp;nbsp;&lt;a href="http://live.visitmix.com/"&gt;MIX11 conference&lt;/a&gt;.&amp;nbsp;If you would like to know more details about the new Silverlight 5 3D API and the roadmap, then you should definitely check out the&amp;nbsp;&lt;a href="http://live.visitmix.com/"&gt;MIX11&lt;/a&gt;&amp;nbsp;session&amp;nbsp;&lt;a href="http://channel9.msdn.com/events/MIX/MIX11/MED06"&gt;Graphics &amp;amp; 3D with Silverlight 5&lt;/a&gt;&amp;nbsp;by the Silverlight program manager Aaron Oneal&amp;nbsp;on Wednesday, April 13 3:30 pm - 4:30 pm PDT. All MIX sessions are recorded and&amp;nbsp;will be &lt;a href="http://live.visitmix.com/"&gt;available online&lt;/a&gt; 24 hours after each session.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;No, Silverlight is not dead and it's clear that Microsoft is investing in it. I'm sure the new features and esp. the XNA 3D API will lead to some great applications in the future.&amp;nbsp;The future is bright and we are part of it.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Kodierer/~4/fX4TrqLzANc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://kodierer.blogspot.com/feeds/4952993845304242505/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://kodierer.blogspot.com/2011/04/xna-for-web-silverlight-5.html#comment-form" title="9 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/4952993845304242505" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/563071785757928434/posts/default/4952993845304242505" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Kodierer/~3/fX4TrqLzANc/xna-for-web-silverlight-5.html" title="XNA for the Web - Silverlight 5" /><author><name>Rene Schulte</name><uri>http://www.blogger.com/profile/12777157871967896549</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://1.bp.blogspot.com/_EtiC5s1ztXY/SgLxDjl6yUI/AAAAAAAAAAM/GzTXzXZuoJA/S220/avatar3_bw.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-fzNyqxGfguo/TaNEFqXGlCI/AAAAAAAAAQY/6DEaKXErCFk/s72-c/Earth_Moon_192x192.jpg" height="72" width="72" /><thr:total>9</thr:total><feedburner:origLink>http://kodierer.blogspot.com/2011/04/xna-for-web-silverlight-5.html</feedburner:origLink></entry></feed>
