分享

TeeChart Pro .Net汉化教程二:TeeChart for Windows Phone 7示例

 控件开发 2012-10-11

TeeChart的图表功能已扩展至移动平台,其已集成入Android, Windows Phone7 和iPhone/ iPad开发环境,可为之提供图表,地图以及仪表盘。TeeChart for Windows Phone 7的使用对有TeeChart API与Silverlight使用经验的用户来说是类似的.然而,也有一些该平台的特殊问题. 本文主要介绍TeeChart .NET在Windows 7上的运行以及与其他TeeChart版本间的不同之处。

安装Visual Studio 2010的插件

现在,在Windows Phone 7平台上开发所需的所有的工具都可从"应用中心"  (http://create.)上下载.在该链接的首页上,所有需要的免费工具都可以下载.请注意这些工具仅能在Windows 7及以上的平台上使用.TeeChart .NET for Windows Phone的程序集也依赖于Silverlight for Windows Phone Toolkit,您可以从Codeplex (http://silverlight./)网站上下载.该工具集中的程序集也都在TeeChart .NET Windows Phone 7的示例中被引用.

运行Windows Phone 7示例

TeeChart for .NET for Visual Studio 2010的安装程序在Windows 7上运行时,会自动安装一个Windows Phone 7的示例程序.该示例可在DemoProjectWindowsPhone文件夹下的Example文件夹中找到.该应用程序可在安装有Windows Phone 7插件和Silverlight for Windows Phone工具集的Visual Studio 2010中打开,并可在Windows Phone 7设备或者仿真器上运行.

针对TeeChart .NET for Windows Phone 7的API的变化

Steema.TeeChart.Silverlight.Drawing.Aspect.RenderSeriesAsImage
RenderSeriesAsImage布尔属性可获取或设置TeeChart是否用位图图像来渲染序列和序列点.当TeeChart不以位图图像来渲染序列,对于有着像素分辨率低的大量数据点的图表来说,在将其放大到一个大的比例时缩放与拖拽操作速度会更快.   

Steema.TeeChart.Silverlight.Drawing.Aspect.GestureOptions
GestureOptions属性可获取或设置一个枚举值(Gestures),用于控制TeeChart .NET for Windows Phone 7响应哪一个动作.所以我们可将该属性设为Gestures.None,在这种情况下控件将不响应任何的缩放或拖拽动作,您也可将该属性设置为 Gestures.PinchOnly, Gestures.DragOnly或Gestures.PinchAndDrag.   

Steema.TeeChart.Silverlight.Drawing.Aspect.GestureStyle
GestureStyles属性可获取或设置一个枚举值(GestureStyles),用于控制TeeChart .NET for Windows Phone 7如何响应缩放与拖拽操作.所以我们可将该属性设置为GestureStyles.InChart,在这种情况下TeeChart序列与轴将独立响应缩放与拖拽操作.或者也可设置为GestureStyles.FullChart,在这种情况下整个图表都会响应缩放与拖拽操作.

TeeChart .NET for Windows Phone 7与其他TeeChart版本间的不同之处

由于我们努力维持在缩放与滚动效果上的高水平,以及维持TeeChart API的跨平台性,所以在TeeChart for Windows Phone 7上不得不做一些妥协.   

正如我们所知,每个在TeeChart其他平台上可实现的功能,在Windows Phone 7同样也可以实现,不论是禁用缩放与拖拽 (GestureOptions = Gestures.None),还是使用整个图表的缩放与拖拽(GestureStyle = GestureStyles.FullChart).在激活InChart的缩放与拖拽(GestureStyle = GestureStyles.InChart与GestureOptions != Gestures.None)后,这里通过一个示例来介绍在所有平台上,包括Windows Phone 7上使用TeeChart的几个技术点. 在该示例中,想要实现的效果为:当图表缩放或滚动时,在图表上跟随着每个序列点绘制一些文本.在Windows Forms中,我们可通过以下的代码实现该功能:

    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 7下等同的代码如下: The equivalent code in Windows Phone 7 is this:

    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 7下的代码段,如下:

    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 7渲染不同的图表元素到不同的画布,而一般情况下是将所有的图表元素渲染到同一块画布. 所以允许文本跟随序列画布上的元素移动时,一个事件将会被选择用于在同一画布上绘制,在这种情况下是Series的AfterDrawValues事件. 在这种情况下,Chart的AfterDraw事件将在不同的画布中绘制.。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多