ÿþ<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta HTTP-EQUIV="REFRESH" content="0; url=http://www.softwarefx.com/sfxNetProducts/ChartFX/wpf/default.aspx"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Chart FX for WPF - Charting Component for Windows Presentation Foundation, Win FX, Avalon</title> <meta name="keywords" content="chart fx for wpf, windows presentation foundation, avalon, win fx chart"> <meta name="description" content="Chart FX for WPF : The most powerful charting and data visualization tool for Win FX and the Windows Presentation Foundation."> <link rel="stylesheet" type="text/css" href="wpfstyles.css" /> <script language="javascript" src="script/flashobject.js"></script> <script language="javascript"> <!-- function SelectLayout(){ var maxwidth = 1230 ; var maxheight = 900; if(parseInt(screen.height)<maxheight) maxheight = parseInt(screen.height)-50; if(parseInt(screen.width)<maxwidth) maxwidth = parseInt(screen.width); window.resizeTo(maxwidth,maxheight); window.moveTo(1,1); } var refreshtimer; function SelectLayoutTimer(){ refreshtimer = setTimeout("SelectLayout()", 100); } function HoverButton(btnid){ document.getElementById(btnid).src = 'images/' + btnid + '-over.png'; } function RestoreButton(btnid){ document.getElementById(btnid).src = 'images/' + btnid + '.png'; } function ContentDisplay(currentid,swfFrame){ mybgimg = document.getElementById('imgbgtrace'); mybgimg.src = 'images/bgtrace_' + currentid + '.png'; SendVarToFlash(swfFrame); } function SendVarToFlash(currentid){ var myFlash = document.getElementById('swfDisplayText'); if(myFlash){ myFlash.GotoFrame(currentid); }else{ alert('flash not found.'); } } //--> </script> </head> <body > <div class="mainbg" style="position:absolute; z-index:2"><img src="images/spacer.gif" class="stretchitem"/></div> <div id="divtextcontent" style="position:absolute; z-index:1; visibility: visible; " class="htmlcontent"> <p>Overview </p> <p> Today, just a few years from the first release of the .NET Framework, it appears the software development industry is, yet again, in front of another technology innovation that will dramatically influence the way applications are built and deployed. In fact, Microsoft s ecosystem of development tools for WinFX, including Visual Studio and Expression, will make it highly attractive for everybody involved in application development and design to target the Windows Presentation Foundation or WPF. </p> <p>Testament to our continued recognition of the importance of this strong foundation, Software FX has already started working on the next major overhaul of Chart FX. We have been working hard with the MS WPF team to bring you the most advanced data visualization tool for WPF applications. Chart FX for WPF will be released on or around the same release date for Windows Vista and WPF currently set for Q4, 2006. </p> <p>Chart FX for WPF takes advantage of 2D vector shapes, 2D animation, images, 3D geometries, 3D animation and text to provide more than just cosmetic innovations. Actually, Chart FX for WPF not only makes the application experience more enjoyable and intuitive to the user but our WPF-related smarts, visuals and user interface innovations will unleash new ways of exploring and analyzing enterprise data. </p> <p>This pre-release site introduces and describes some improvements and innovations we re making to our core charting technology in the following areas: Styling, User Interaction, IDE integration, 3D and Data binding. These are very big complex topics in WPF; we ll simply introduce some of these concepts and their impact in the context of a data visualization tool like Chart FX.</p> <p> If you are interested in Chart FX for WPF, we can provide proof-of-concept bits for integration into your application or you can download a WPF sample application that you may run to test the control. For additional information, you can also email us at wpf@softwarefx.com </p> <p>In order to protect our intellectual property and R&D efforts, we ask that you please identify yourself and execute an NDA (Non-Disclosure Agreement) before gaining access to any Chart FX for WPF deliverables.</p> <p>&nbsp;</p> <p> Styling and XAML support. </p> <p>Producing eye-catching charts and layouts is especially important to captivate users and draw them in to explore the data within an application. For the first time ever, developers will be able to fully  style chart elements and tightly couple Chart FX for WPF to their application and user interface guidelines. </p> <p>Chart FX for WPF exploits the openness of XAML (eXtensible Application Markup Language), a descriptive markup language for describing managed objects. In practical terms, XAML enables other development roles, such as graphics designers and usability experts to contribute to the application development process. For example, a designer opens and edits a Visual Studio project in Microsoft s Expression Interactive Designer (a.k.a Sparkle) to gain access to drawings and animations without its associated confusing code and callbacks. On the other hand, a developer need not be concerned with how these drawings or animations work or how they were constructed. </p> <p>Our designers have created XAML scripts to display curved and glassed borders, gradient backgrounds, complex color schemes and styling of boxed containers like legend boxes and data grids with just a property setting. XAML scripts are also used to describe visuals and behaviors for chart markers, pie slices, titles and labels and virtually all other chart elements. In addition, the ability to integrate custom XAML scripts in each of these objects and instances makes Chart FX for WPF even more attractive for those creating proprietary or complex user interfaces and visuals. </p> <p>Also, Chart FX exploits the WPF layout engine to allow chart elements to flow naturally in the chart area; no chart element is absolutely positioned, allowing for more flexible and intelligent resizing within the application. </p> <p>Note: Although XAML is used throughout Chart FX for WPF, you don t need specific XAML knowledge to use Chart FX for WPF or to customize the Chart FX presentation or UI layer. Much of this functionality has already been integrated or will be integrated into the product. Nevertheless, XAML is going to become a factor that should at least be familiar when developing WPF applications. </p> <p>&nbsp;</p> <p>User Interactivity</p> <p> Simply put, Chart FX for WPF breaks ground on new powerful real-world UI metaphors! </p> <p>The idea is that users can select any of the chart elements they would like to manipulate and provide compelling user interfaces to make the process of analyzing data more powerful and intuitive. </p> <p>For example, Chart FX for WPF uses 3D animation to scale, rotate, and move charts within the application in response to user actions and other events. Also, animations are used to draw attention to UI elements or to simply transition an element to a new state (i.e. drill down, rotation, scrolling). Animations are also used with 2D graphics; for example animated 3D surfaces and layering/angling windows have become very popular among early adopters of Chart FX for WPF.</p> <p>&nbsp;</p> <p> 3D Rendering </p> <p>Before WPF, many charting vendors attempted, unsuccessfully, to integrate Direct3D as the preferred 3D drawing engine1. Although Direct3D provided an excellent 3D platform for game vendors, it was not technically feasible for a charting product for developers. For several reasons:</p> <p> Firstly, lack of integration to the IDE (namely Visual Studio) made it difficult for developers to easily integrate Direct3D in their applications; performance and scalability issues prevented it from being deployed in complex web server and client architectures; client-side requirements made it difficult for end users to properly configure or support in an enterprise computing environment. Lastly but more importantly, Direct3D was not an integral part of the OS. </p> <p>With WPF, Microsoft is supporting animated 3D meshes with video materials; sub-pixel clear type text; 2D animation with vector-based shapes; and more. All of this is made possible by the underlying WPF engine, which is hardware accelerated and integrates these different media into a common experience and foundation that is easy to program and deploy.</p> <p> Chart FX fully exploits WPF s 3D capabilities to allow developers to support true 3D charts in their applications by supporting materials and lighting without sacrificing the application s performance, scalability, integration or look-and-feel.</p> <p> In addition, Chart FX for WPF uses 3D in subtle, but powerful ways to enhance its user experience, employing this third dimension to provide intuitive user interface metaphors. For example, one of the capabilities that WPF provides is the ability to render 2D visual elements on 3D surface. For example, you can place panels, text blocks and images. These animated 3D visual elements are used to provide powerful navigation tools to  slice and dice data. </p> <p>However, Chart FX for WPF is and will continue to be an enterprise data visualization solution that is used to do business-related tasks. As such, we believe WPF 3D usage should be limited to help in those tasks and make the application s experience more enjoyable to the user. </p> <p>1 Software FX never attempted to use Direct3D in Chart FX</p> <p>&nbsp;</p> <p> Data Binding </p> <p>Through the magic of WPF data binding, you could easily populate a chart based on other controls, XML files, databases and other underlying data. The chart will not be just limited to numbers to plot but other informational data that can be used to enhance the experience as a response to user actions and other events (rich content). In addition, Chart FX for WPF provides a way for you to specify how you want to group, filter or sort your data items, giving way to new data analysis scenarios. </p> <p>Rich content is perhaps one of the most promising features in Chart FX for WPF, allowing innovative user interactivity scenarios not previously possible in Win32 or .NET development. For example, Chart FX for WPF can host a more complex set of data associated to series in the chart giving users zoom control of to inspect that data with closer scrutiny and page through the results. </p> <p>&nbsp;</p> <p>IDE Integration </p> <p>As Microsoft advances with Visual Studio (a.k.a. Orcas) and other important WPF tools like Microsoft Interactive Expression Designer (a.k.a Sparkle), we will expand our efforts around programmability, developer productivity and IDE integration. In the meantime, the chart must be integrated and coded manually into your application. More information about integration will be provided with the proof-of-concept Chart FX for WPF bits. </p> <p>In any case, please pay attention to any of the following Microsoft tools:</p> <p> - Microsoft Visual Studio Code Name  Orcas - Development Tools for WinFX® (CTP) provides developers with support for building WinFX applications using the final released version of Visual Studio 2005. This support includes XAML Intellisense support through schema extensions for the editor, project templates for the Windows Presentation Foundation (formerly code named  Avalon ) and the Windows Communication Foundation (formerly code named  Indigo ), and WinFX SDK documentation integration. New to this CTP is a preview of the Visual Designer for Windows Presentation Foundation (code name "Cider"), more information can be found on the Channel 9 Wiki site for Cider. This CTP does not include a graphical design surface for the Windows Communication Foundation.</p> <p> - Microsoft s new Expression Interactive Designer (a.k.a. Sparkle) tool aims to ease collaboration between designers and programmers by using XAML to describe user interface elements in a single format rather than constantly translating between formats that are targeted squarely at one job or the other. </p> </div> <div id="divlogo" style="position:absolute; z-index:5; visibility: visible;" class="floatright leftalign"> <table cellpadding="0" cellspacing="0" border="0" ><tr><td> <img src="images/spacer.gif" width="1" height="1" /></td></tr><tr><td> <img src="images/logo.png" width="800" height="263" /> </td></tr></table></div> <div id="divnavigation" style="position:absolute; z-index:10; visibility: visible;" class="stretchitem rightalign"> <table cellpadding="0" cellspacing="0" border="0" class="stretchitem topalign"><tr><td><img src="images/spacer.gif" width="700" height="1"/></td><td class="topalign"> <table cellpadding="0" cellspacing="0" border="0" class="floatright"> <tr><td rowspan="11"><img src="images/spacer.gif" width="10" height="2"/></td></tr> <tr> <td><img src="images/spacer.gif" width="375" height="100"/></td> </tr> <tr> <td class="leftalign"><a href="javascript:;" onclick="ContentDisplay('overview',2);return false" onfocus="blur()"><img src="images/btn_overview.png" name="btn_overview" width="246" height="26" border="0" id="btn_overview" onmouseover="HoverButton(this.id)" onmouseout="RestoreButton(this.id)"/></a></td> </tr> <tr> <td class="leftalign"><a href="javascript:;" onclick="ContentDisplay('styling',6)" onfocus="blur()"><img src="images/btn_styling.png" name="btn_styling" width="246" height="26" border="0" id="btn_styling" onmouseover="HoverButton(this.id)" onmouseout="RestoreButton(this.id)"/></a></td> </tr> <tr> <td class="leftalign"><a href="javascript:;" onclick="ContentDisplay('ui',7)" onfocus="blur()"><img src="images/btn_ui.png" name="btn_ui" width="246" height="26" border="0" id="btn_ui" onmouseover="HoverButton(this.id)" onmouseout="RestoreButton(this.id)"/></a></td> </tr> <tr> <td class="leftalign"><a href="javascript:;" onclick="ContentDisplay('3d',3)" onfocus="blur()"><img src="images/btn_3d.png" name="btn_3d" width="246" height="26" border="0" id="btn_3d" onmouseover="HoverButton(this.id)" onmouseout="RestoreButton(this.id)"/></a></td> </tr> <tr> <td class="leftalign"><a href="javascript:;" onclick="ContentDisplay('databinding',4)" onfocus="blur()"><img src="images/btn_databinding.png" name="btn_databinding" width="246" height="26" border="0" id="btn_databinding" onmouseover="HoverButton(this.id)" onmouseout="RestoreButton(this.id)"/></a></td> </tr> <tr> <td class="leftalign"><a href="javascript:;" onclick="ContentDisplay('integration',5)" onfocus="blur()"><img src="images/btn_integration.png" name="btn_integration" width="246" height="26" border="0" id="btn_integration" onmouseover="HoverButton(this.id)" onmouseout="RestoreButton(this.id)"/></a></td> </tr> <tr> <td class="leftalign"><img src="images/spacer.gif" width="50" height="198"/></td> </tr> <tr> <td class="leftalign" > <!-- BEGIN FLASHOBJECT --> <div id="flashcontent"> <script type="text/javascript"> // <![CDATA[ var fo = new FlashObject("images/button.swf", "ApplyforBeta", "300", "60", "6.0.0.0", "#FFFFFF"); fo.addParam("quality", "high"); fo.addParam("wmode", "transparent"); fo.write("flashcontent"); // ]]> </script> </div> <!-- ENDFLASHOBJECT --> </td> </tr> <tr><td align="right" valign="bottom"> <table cellpadding="0" cellspacing="0" border="0"> <tr><td><img src="images/spacer.gif" height="150" width="1" /></td></tr> <tr><td> <a href="http://www.softwarefx.com"><img src="images/sfxlogo.png" width="259" height="54" border="0" /></a> </td></tr></table> </td> </tr> </table> </td> </tr> </table> </div> <div id="divbetaarea" style="position:absolute; z-index:7; visibility: visible;" class="stretchitem topalign"> <table cellpadding="0" cellspacing="0" border="0" class="floatright" > <tr> <td rowspan="2"><img src="images/spacer.gif" width="667" height="120"/></td> <td><img src="images/spacer.gif" width="10" height="30"/></td></tr> <tr> <td class="topalign"> <img src="images/betadownloadarea.png" width="417" height="466"/> </td> </tr></table></div> <div id="divtraceBackgrounds" style="position:absolute; z-index:3; overflow:hidden; visibility: visible;" class="stretchitem bottomalign"> <table border="0" cellpadding="0" cellspacing="0" class="stretchitem"> <tr> <td class="bottomalign"> <img src="images/bgtrace_overview.png" width="1200" height="599" id="imgbgtrace"/> </td></tr></table></div> <div id="divcontent" class="leftalign topalign" style="position:absolute; z-index:11; visibility: visible" > <table border="0" cellspacing="0" cellpadding="0" class="leftalign topalign"> <tr height="1"> <td colspan="2" height="1"> <img src="images/spacer.gif" height="165" width="1" /> </td></tr> <tr height="70%"> <td><img src="images/spacer.gif" width="50" height="46"/></td> <td valign="top" align="center"> <div id="flashcontent2" style="vertical-align:top;"> <script type="text/javascript"> // <![CDATA[ var fo = new FlashObject("images/text.swf", "swfDisplayText", "650", "550", "6.0.0.0", "#FFFFFF"); fo.addParam("quality", "high"); fo.addParam("wmode", "transparent"); fo.write("flashcontent2"); // ]]> </script></div> </td> </tr> </td></tr></table> </div> <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-329449-1"; urchinTracker(); </script> </body> </html>