【TeeChart .NET教程】(二十)适用于Windows Phone 7和8的TeeChart
【下载TeeChart.Net最新版本】
对于具有TeeChart API和Silverlight经验的任何人来说,使用TeeChart for Windows Phone 7和8将会很熟悉,但是,我们将在此处介绍该平台特有的一些情况。
(一)安装Visual Studio 2010插件
可以从“App Hub”(//create.msdn.com)下载Windows Phone 7平台上开发所需的所有工具。从彩票走势图上的链接,可以下载所有必要的免费工具。请注意,这些工具仅适用于Windows 7或更高版本。TeeChart .NET for Windows Phone程序集还依赖于Silverlight for Windows Phone Toolkit。此工具包中的程序集也在TeeChart .NET Windows Phone 7示例中引用。
(二)运行Windows Phone 7示例
在Windows 7上运行时,TeeChart for .NET for Visual Studio 2010的安装程序将自动安装Windows Phone 7的示例项目。此示例可在DemoProjectWindowsPhone文件夹下的Example文件夹中找到。可以在Visual Studio 2010中使用Windows Phone 7插件打开该项目,并在Windows Phone 7设备或模拟器中安装并运行Silverlight for Windows Phone Toolkit。
(三)特定于Windows Phone 8开发的更改
选择Visual Studio 2012或Visual Studio 2013的安装程序组件时,将安装TeeChart.Phone.dll for Windows Phone 8。第一个显着的区别是,在Visual Studio 2012和2013中使用Windows Phone所需的所有工具已经集成在这两个IDE中。这里的第二个区别是Windows Phone 8示例项目对Multilingual App Toolkit(//msdn.microsoft.com/en-us/windows/apps/bg127574)的依赖性,可以使用Visual Studio提供的NuGet进行安装, “Tools”菜单下的“Extensions and Updates Manager扩展和更新管理器”。
(四)特定于TeeChart .NET for Windows Phone的API更改
4.1 Steema.TeeChart.Silverlight.Drawing.Aspect.RenderSeriesAsImage
RenderSeriesAsImage布尔属性获取或设置TeeChart是否在位图图像中呈现Series及其点。当TeeChart将系列渲染为位图图像时,对于大量的点,捏合和拖动图表会更快,而当系列缩放到大范围时,会降低像素分辨率的成本。
4.2 Steema.TeeChart.Silverlight.Drawing.Aspect.GestureOptions
GestureOptions属性获取或设置一个枚举(Gestures),它控制TeeChart .NET for Windows Phone 7响应的手势移动。因此我们可以将此属性设置为Gestures.None,在这种情况下,控件不会响应捏合或拖动手势,也不会响应Gestures.PinchOnly,Gestures.DragOnly或Gestures.PinchAndDrag。
4.3 Steema.TeeChart.Silverlight.Drawing.Aspect.GestureStyle
GestureStyles属性获取或设置一个枚举(GestureStyles),它控制TeeChart .NET for Windows Phone 7如何响应捏合和拖动手势。因此我们可以将此属性设置为GestureStyles.InChart,在这种情况下,TeeChart系列和轴将独立响应捏合和拖动手势,或者回应GestureStyles.FullChart,在这种情况下,TeeChart的整个响应将对它们做出响应。
(五)TeeChart .NET for Windows Phone与其他TeeChart版本之间的重要区别
尽管已经尽一切努力在缩放(捏合)和滚动(拖动)方面保持高水平的性能并且在所有平台上保持TeeChart API的直观性,但在TeeChart for Windows Phone的情况下,已经做出了一些调整。TeeChart在其他平台上可以完成的所有事情也可以在Windows Phone上完成,可以通过捏合和拖动停用(GestureOptions = Gestures.None)或使用FullChart捏合和拖动(GestureStyle = GestureStyles.FullChart) )。通过激活InChart夹点和拖动(GestureStyle = GestureStyles.InChart和GestureOptions!= Gestures.None),将会出现一些使用TeeChart的技术在Windows Phone以外的所有平台中都有效的情况。作为一个例子,考虑在缩放和滚动时想要在图表上绘制一些文本的情况。在Windows窗体中,我们将使用以下代码实现此目的:
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"); }
但是,这两个代码段在屏幕上不会产生相同的结果,为了达到同样的效果,不得不修改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事件将绘制到不同的画布。