<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Web Development Strategy @ Microsoft : ASP.NET / PHP / Silverlight / Java / UX  : WPF</title><link>http://blogs.msdn.com/webnext/archive/tags/WPF/default.aspx</link><description>Tags: WPF</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Improving performance in WPF applications</title><link>http://blogs.msdn.com/webnext/archive/2007/08/08/improving-performance-in-wpf-applications.aspx</link><pubDate>Wed, 08 Aug 2007 20:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4295586</guid><dc:creator>lmoroney@microsoft.com</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/webnext/comments/4295586.aspx</comments><wfw:commentRss>http://blogs.msdn.com/webnext/commentrss.aspx?PostID=4295586</wfw:commentRss><wfw:comment>http://blogs.msdn.com/webnext/rsscomments.aspx?PostID=4295586</wfw:comment><description>If you've been using WPF with layered windows to provide transparency [with the Windows.Transparency option set to true ], you may have noticed that the performance isn't what you might expect. A supported hotfix to the problem can now be downloaded....(&lt;a href="http://blogs.msdn.com/webnext/archive/2007/08/08/improving-performance-in-wpf-applications.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4295586" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/webnext/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/webnext/archive/tags/Architecture/default.aspx">Architecture</category></item><item><title>Silverlight: Convert Text to Path</title><link>http://blogs.msdn.com/webnext/archive/2007/05/22/silverlight-convert-text-to-path.aspx</link><pubDate>Wed, 23 May 2007 01:07:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2801205</guid><dc:creator>lmoroney@microsoft.com</dc:creator><slash:comments>8</slash:comments><comments>http://blogs.msdn.com/webnext/comments/2801205.aspx</comments><wfw:commentRss>http://blogs.msdn.com/webnext/commentrss.aspx?PostID=2801205</wfw:commentRss><wfw:comment>http://blogs.msdn.com/webnext/rsscomments.aspx?PostID=2801205</wfw:comment><description>&lt;p&gt;The WPF APIs provide a &lt;font face="Courier New" size="3"&gt;FormattedText&lt;/font&gt;&amp;nbsp;object that allows you to export its contents as a Geometry, which in turn allows you to generate its contents in the &lt;a href="http://msdn2.microsoft.com/en-us/library/bb412389.aspx"&gt;XAML Path Mini Language&lt;/a&gt;.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Here's an example of a Web service that takes in the text, typeface, size and other parameters, loads them into a FormattedText, and uses this to generate a Path as a result.&lt;/p&gt; &lt;p&gt;You can then take the returned value from this Web service and load it into the Data attribute of a Path to get the desired text rendered in Silverlight. This will allow you to have any text from any font rendered in your Silverlight page.&lt;/p&gt; &lt;p&gt;This will allow you to:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Provide text from unsupported fonts  &lt;li&gt;Provide text from languages other than English&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Here's the Source Code for the Web Service:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;[WebMethod]&lt;br&gt;public string Text2Path(String strText, string strCulture, bool LtoR, string strTypeFace, int nSize)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set up the Culture&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (strCulture == "")&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strCulture = "en-us"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo(strCulture);&lt;br&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set up the flow direction&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Windows.FlowDirection fd;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (LtoR)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fd = FlowDirection.LeftToRight;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fd = FlowDirection.RightToLeft; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set up the font family from the parameter&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FontFamily ff = new FontFamily(strTypeFace); &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create the new typeface&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Windows.Media.Typeface tf = new System.Windows.Media.Typeface(ff,&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FontStyles.Normal, FontWeights.Normal, FontStretches.Normal);&lt;br&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create a formatted text object from the text, &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// culture, flowdirection, typeface, size and black&lt;br&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FormattedText t = new FormattedText(strText, ci, fd, tf, nSize,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Windows.Media.Brushes.Black); &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Build a Geometry out of this&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Geometry g = t.BuildGeometry(new Point(0, 0)); &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the Path info from the geometry&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PathGeometry p = g.GetFlattenedPathGeometry(); &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Return the path info&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return p.ToString(); &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size="2"&gt;}&lt;/font&gt;  &lt;p&gt;Here's an example of calling this Web service using some Korean Text:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/?9750679B&amp;amp;http://support.microsoft.com/sp&amp;amp;&amp;amp;HL=%ec%84%9c%eb%b9%84%ec%8a%a4+%ed%8c%a9&amp;amp;CM=h&amp;amp;CE=%ec%a7%80%ec%9b%90"&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/blogfiles/webnext/WindowsLiveWriter/SilverlightConvertTexttoPath_CFC3/image%7B0%7D%5B6%5D.png" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="624" src="http://blogs.msdn.com/blogfiles/webnext/WindowsLiveWriter/SilverlightConvertTexttoPath_CFC3/image%7B0%7D_thumb%5B4%5D.png" width="527" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;This Web Service returns a String containing the Path Mini Language:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/webnext/WindowsLiveWriter/SilverlightConvertTexttoPath_CFC3/image%7B0%7D%5B10%5D.png" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="513" src="http://blogs.msdn.com/blogfiles/webnext/WindowsLiveWriter/SilverlightConvertTexttoPath_CFC3/image%7B0%7D_thumb%5B6%5D.png" width="568" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;In Silverlight you use the &amp;lt;Path&amp;gt; tag to define a path. It takes a 'Data' attribute which takes a string in the path mini language format, so all you ahve to do is set it to the contents of the value returned from the Web service.&lt;/p&gt; &lt;p&gt;Here's the Korean text from earlier, being rendered in Silverlight using this path.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/webnext/WindowsLiveWriter/SilverlightConvertTexttoPath_CFC3/image%7B0%7D%5B14%5D.png" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="530" src="http://blogs.msdn.com/blogfiles/webnext/WindowsLiveWriter/SilverlightConvertTexttoPath_CFC3/image%7B0%7D_thumb%5B8%5D.png" width="540" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;In the next installment of this blog I'll go into adding a text box to the page, overlaying it on the Silverlight content using windowless mode. It will support text input using an IME, and then use ASP.NET AJAX to call this service, get the response and load it into the path.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2801205" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/webnext/archive/tags/WPF_2F00_E/default.aspx">WPF/E</category><category domain="http://blogs.msdn.com/webnext/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/webnext/archive/tags/Web.NEXT/default.aspx">Web.NEXT</category><category domain="http://blogs.msdn.com/webnext/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/webnext/archive/tags/Unicode/default.aspx">Unicode</category><category domain="http://blogs.msdn.com/webnext/archive/tags/Chinese/default.aspx">Chinese</category><category domain="http://blogs.msdn.com/webnext/archive/tags/International/default.aspx">International</category><category domain="http://blogs.msdn.com/webnext/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Silverlight Book</title><link>http://blogs.msdn.com/webnext/archive/2007/05/18/silverlight-book.aspx</link><pubDate>Fri, 18 May 2007 07:03:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2705222</guid><dc:creator>lmoroney@microsoft.com</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/webnext/comments/2705222.aspx</comments><wfw:commentRss>http://blogs.msdn.com/webnext/commentrss.aspx?PostID=2705222</wfw:commentRss><wfw:comment>http://blogs.msdn.com/webnext/rsscomments.aspx?PostID=2705222</wfw:comment><description>&lt;p&gt;There have been lots of questions since MIX07 about a book on Silverlight. I'm working on one for MS Press, which is designed to be 1/3 ASP.NET, 1/3 AJAX and 1/3 Silverlight. It's intended to be an introduction to the Microsoft Stack for folks coming in from PHP or other frameworks, or a refresher on ASP.NET and/or AJAX for folks who are familiar with them, framing up the last part, which is a deep dive into Silverlight 1.0.&lt;/p&gt; &lt;p&gt;I also have a Silverlight 1.1. book on the drawing board for publication later. The 1.1. book will concentrate on programming the .NET framework for Silverlight. If you want to build applications, learn XAML, Expression, JavaScript and everything else you need to put together cool stuff like that on &lt;a href="http://www.silverlight.net"&gt;www.silverlight.net&lt;/a&gt;, then read Programming Web.NEXT when it comes out.&lt;/p&gt; &lt;p&gt;Here's the Amazon link:&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.amazon.com/Programming-Web-Next-Pro-Laurence-Moroney/dp/0735624127/ref=sr_1_3/102-8985497-1143319?ie=UTF8&amp;amp;s=books&amp;amp;qid=1179332533&amp;amp;sr=8-3" href="http://www.amazon.com/Programming-Web-Next-Pro-Laurence-Moroney/dp/0735624127/ref=sr_1_3/102-8985497-1143319?ie=UTF8&amp;amp;s=books&amp;amp;qid=1179332533&amp;amp;sr=8-3"&gt;http://www.amazon.com/Programming-Web-Next-Pro-Laurence-Moroney/dp/0735624127/ref=sr_1_3/102-8985497-1143319?ie=UTF8&amp;amp;s=books&amp;amp;qid=1179332533&amp;amp;sr=8-3&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Laurence&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2705222" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/webnext/archive/tags/WPF_2F00_E/default.aspx">WPF/E</category><category domain="http://blogs.msdn.com/webnext/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/webnext/archive/tags/Web.NEXT/default.aspx">Web.NEXT</category><category domain="http://blogs.msdn.com/webnext/archive/tags/Silverlight/default.aspx">Silverlight</category></item></channel></rss>