【TeeChart .NET教程】(二十)適用于Windows Phone 7和8的TeeChart
【下載TeeChart.Net最新版本】
對于具有TeeChart API和Silverlight經(jīng)驗(yàn)的任何人來說,使用TeeChart for Windows Phone 7和8將會很熟悉,但是,我們將在此處介紹該平臺特有的一些情況。
(一)安裝Visual Studio 2010插件
可以從“App Hub”(http://create.msdn.com)下載Windows Phone 7平臺上開發(fā)所需的所有工具。從首頁上的鏈接,可以下載所有必要的免費(fèi)工具。請注意,這些工具僅適用于Windows 7或更高版本。TeeChart .NET for Windows Phone程序集還依賴于Silverlight for Windows Phone Toolkit。此工具包中的程序集也在TeeChart .NET Windows Phone 7示例中引用。
(二)運(yùn)行Windows Phone 7示例
在Windows 7上運(yùn)行時,TeeChart for .NET for Visual Studio 2010的安裝程序?qū)⒆詣影惭bWindows Phone 7的示例項(xiàng)目。此示例可在DemoProjectWindowsPhone文件夾下的Example文件夾中找到??梢栽赩isual Studio 2010中使用Windows Phone 7插件打開該項(xiàng)目,并在Windows Phone 7設(shè)備或模擬器中安裝并運(yùn)行Silverlight for Windows Phone Toolkit。
(三)特定于Windows Phone 8開發(fā)的更改
選擇Visual Studio 2012或Visual Studio 2013的安裝程序組件時,將安裝TeeChart.Phone.dll for Windows Phone 8。第一個顯著的區(qū)別是,在Visual Studio 2012和2013中使用Windows Phone所需的所有工具已經(jīng)集成在這兩個IDE中。這里的第二個區(qū)別是Windows Phone 8示例項(xiàng)目對Multilingual App Toolkit(http://msdn.microsoft.com/en-us/windows/apps/bg127574)的依賴性,可以使用Visual Studio提供的NuGet進(jìn)行安裝, “Tools”菜單下的“Extensions and Updates Manager擴(kuò)展和更新管理器”。
(四)特定于TeeChart .NET for Windows Phone的API更改
4.1 Steema.TeeChart.Silverlight.Drawing.Aspect.RenderSeriesAsImage
RenderSeriesAsImage布爾屬性獲取或設(shè)置TeeChart是否在位圖圖像中呈現(xiàn)Series及其點(diǎn)。當(dāng)TeeChart將系列渲染為位圖圖像時,對于大量的點(diǎn),捏合和拖動圖表會更快,而當(dāng)系列縮放到大范圍時,會降低像素分辨率的成本。
4.2 Steema.TeeChart.Silverlight.Drawing.Aspect.GestureOptions
GestureOptions屬性獲取或設(shè)置一個枚舉(Gestures),它控制TeeChart .NET for Windows Phone 7響應(yīng)的手勢移動。因此我們可以將此屬性設(shè)置為Gestures.None,在這種情況下,控件不會響應(yīng)捏合或拖動手勢,也不會響應(yīng)Gestures.PinchOnly,Gestures.DragOnly或Gestures.PinchAndDrag。
4.3 Steema.TeeChart.Silverlight.Drawing.Aspect.GestureStyle
GestureStyles屬性獲取或設(shè)置一個枚舉(GestureStyles),它控制TeeChart .NET for Windows Phone 7如何響應(yīng)捏合和拖動手勢。因此我們可以將此屬性設(shè)置為GestureStyles.InChart,在這種情況下,TeeChart系列和軸將獨(dú)立響應(yīng)捏合和拖動手勢,或者回應(yīng)GestureStyles.FullChart,在這種情況下,TeeChart的整個響應(yīng)將對它們做出響應(yīng)。
(五)TeeChart .NET for Windows Phone與其他TeeChart版本之間的重要區(qū)別
盡管已經(jīng)盡一切努力在縮放(捏合)和滾動(拖動)方面保持高水平的性能并且在所有平臺上保持TeeChart API的直觀性,但在TeeChart for Windows Phone的情況下,已經(jīng)做出了一些調(diào)整。TeeChart在其他平臺上可以完成的所有事情也可以在Windows Phone上完成,可以通過捏合和拖動停用(GestureOptions = Gestures.None)或使用FullChart捏合和拖動(GestureStyle = GestureStyles.FullChart) )。通過激活I(lǐng)nChart夾點(diǎn)和拖動(GestureStyle = GestureStyles.InChart和GestureOptions!= Gestures.None),將會出現(xiàn)一些使用TeeChart的技術(shù)在Windows Phone以外的所有平臺中都有效的情況。作為一個例子,考慮在縮放和滾動時想要在圖表上繪制一些文本的情況。在Windows窗體中,我們將使用以下代碼實(shí)現(xiàn)此目的:
Points points; private void InitializeChart() { tChart1.Aspect.View3D = false; tChart1.AfterDraw += new PaintChartEventHandler(tChart1_AfterDraw); tChart1.Series.Add(point = new Points()); point.FillSampleValues(); } void tChart1_AfterDraw(object sender, Graphics3D g) { int x = point.CalcXPosValue(point[3].X); int y = point.CalcYPosValue(point[3].Y); g.Font.Color = Color.Red; g.Font.Size = 16; g.TextOut(x, y, "MyText"); }
Windows Phone中的等效代碼是:
Points point; private void InitializeChart() { tChart1.Aspect.View3D = false; tChart1.AfterDraw += new PaintChartEventHandler(tChart1_AfterDraw); tChart1.Series.Add(point = new Points()); point.FillSampleValues(); } void tChart1_AfterDraw(object sender, Graphics3D g) { double x = point.CalcXPosValue(point[3].X); double y = point.CalcYPosValue(point[3].Y); g.Font.Color = Colors.Red; g.Font.Size = 16; g.TextOut(x, y, "MyText"); }
但是,這兩個代碼段在屏幕上不會產(chǎn)生相同的結(jié)果,為了達(dá)到同樣的效果,不得不修改Windows Phone代碼段:
Points point; private void InitializeChart() { tChart1.Aspect.View3D = false; //tChart1.AfterDraw += new PaintChartEventHandler(tChart1_AfterDraw); tChart1.Series.Add(point = new Points()); point.AfterDrawValues += new PaintChartEventHandler(point_AfterDrawValues); point.FillSampleValues(); } void point_AfterDrawValues(object sender, Graphics3D g) { double x = point.CalcXPosValue(point[3].X); double y = point.CalcYPosValue(point[3].Y); g.Font.Color = Colors.Red; g.Font.Size = 16; g.TextOut(x, y, "MyText"); }
在這些情況下,TeeChart for Windows Phone將不同的Chart元素渲染到多個畫布,通常它將所有Chart元素渲染到一個畫布。因此,要使文本與系列畫布上的元素一起移動,必須選擇一個事件,該事件在同一畫布上繪制,在本例中為Series'OfterDrawValues事件。在此方案中,Chart的AfterDraw事件將繪制到不同的畫布。