FlexChart Zoom(一)

图表缩放指的是局部放大或缩小图表,可以更方便的查看图表数据。FlexChart支持两种方式缩放,缩放(zoom)和平移(panning)本文主要来讲书第一种的缩放模式-缩放,很好理解就是我们选中区域将我们选中的series进行放大,包括对应的的X轴,Y轴以及刻度值一起来放大,来达到我们的放大效果。

发布于 2018/01/30 00:00

ComponentOne Enterprise

概述

图表缩放指的是局部放大或缩小图表,可以更方便的查看图表数据。

FlexChart支持两种方式缩放,缩放(zoom)和平移(panning)

本文主要来讲书第一种的缩放模式-缩放,很好理解就是我们选中区域将我们选中的series进行放大,包括对应的的X轴,Y轴以及刻度值一起来放大,来达到我们的放大效果。

101523n75qfxmqmqpm1f2x

首先我们要扑捉三个事件:MouseDown、MouseMove、MouseUp,

在MouseDown中我们需要记录一下鼠标起始点的位置的点坐标pStart

在MouseMove中我需要来记录选中的区域,来标记我们选中的范围,并画出矩形Rectangle

在MouseUp中我最后一次更新鼠标点的位置,并且

   1:   
   2:          private void PerformZoom(Point ptStart, Point ptLast)
   3:          {
   4:              // Convert points to data coordinates
   5:              var p1 = flexChart1.PointToData(ptStart);
   6:              var p2 = flexChart1.PointToData(ptLast);
   7:              flexChart1.BeginUpdate();
   8:              // Update axes with new limits
   9:              flexChart1.AxisX.Min = Math.Min(p1.X, p2.X);
  10:              flexChart1.AxisY.Min = Math.Min(p1.Y, p2.Y);
  11:              flexChart1.AxisX.Max = Math.Max(p1.X, p2.X);
  12:              flexChart1.AxisY.Max = Math.Max(p1.Y, p2.Y);
  13:              flexChart1.EndUpdate();
  14:          }
  15:          public void ChartMouseDown(Object sender, MouseEventArgs e)
  16:          {
  17:              // Start zooming
  18:              zooming = true;
  19:              // Save starting point of selection rectangle
  20:              ptStart.X = e.X;
  21:              ptStart.Y = e.Y;
  22:              ptLast = Point.Empty;
  23:          }
  24:          public void ChartMouseMove(Object sender, MouseEventArgs e)
  25:          {
  26:              // When zooming update selection range
  27:              if (zooming)
  28:              {
  29:                  Point ptCurrent = new Point(e.X, e.Y);
  30:                  // Undraw old frame
  31:                  if (!ptLast.IsEmpty)
  32:                      DrawReversibleRectangle(ptStart, ptLast);
  33:                  // Update last point
  34:                  ptLast = ptCurrent;
  35:                  // Draw new frame
  36:                  DrawReversibleRectangle(ptStart, ptCurrent);
  37:              }
  38:          }
  39:   
  40:          public void ChartMouseUp(Object sender, MouseEventArgs e)
  41:          {
  42:              // End zooming
  43:              zooming = false;
  44:              // Redraw frame to restore screen 
  45:              if (!ptLast.IsEmpty)
  46:              {
  47:                  Point ptCurrent = new Point(e.X, e.Y);
  48:                  DrawReversibleRectangle(ptStart, ptLast);
  49:              }
  50:              PerformZoom(ptStart, ptLast);
  51:              // Clean up
  52:              ptStart = ptLast = Point.Empty;
  53:          }

 

Demo:\Documents\ComponentOne Samples\WinForms\C1FlexChart\CS\FlexChartExplorer

如果你有疑问,可以到GCDN获得技术支持:

http://gcdn.grapecity.com.cn/showforum-68.html

GCDNhttp://gcdn.grapecity.com.cn/

官方网站/developer

关于葡萄城

葡萄城是专业的软件开发技术和低代码平台提供商,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。葡萄城开发技术始于1980年,40余年来始终聚焦软件开发技术,有深厚的技术积累和丰富的产品线。是业界能够同时赋能软件开发和低代码开发的企业。凭借过硬的产品能力、活跃的用户社区和丰富的伙伴生态,与超过3000家合作伙伴紧密合作,产品广泛应用于信息和软件服务、制造、交通运输、建筑、金融、能源、教育、公共管理等支柱产业。

相关产品
推荐相关案例
关注微信
葡萄城社区二维码

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态