找回密码
 立即注册

QQ登录

只需一步,快速开始

mingcedar

高级会员

5

主题

35

帖子

1570

积分

高级会员

积分
1570

活字格认证

mingcedar
高级会员   /  发表于:2013-12-16 16:35  /   查看:5153  /  回复:3
关于C1Chart的ZoomAction,默认是只要按着鼠标在Chart上划一下(框选),就放大,哪怕只移动了1个像素也会放大。
带来的问题是,想双击操作,鼠标有一点点位移,结果变成放大操作了。
请问,能不能设置框选区域的最小值(如5像素),大于它时才放大,小于它时无操作?

3 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-12-16 18:41:00
沙发
回复 1楼mingcedar的帖子

mingcedar 你好,
这个可以通过计算鼠标点击和释放前后位置来实现,请尝试 MouseLeftButtonDown 和 MouseLeftButtonUp 来获取这个值,再决定是否缩放。
回复 使用道具 举报
mingcedar
高级会员   /  发表于:2013-12-17 10:03:00
板凳
如果距离很小时,用什么语句禁止缩放事件呢?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-12-17 16:49:00
地板
回复 3楼mingcedar的帖子

可以通过判断 MouseLeftButtonDown  和 MouseLeftButtonUp  的距离:

  1. public MainWindow()
  2.         {
  3.             InitializeComponent();
  4.             this.c1Chart1.MouseLeftButtonDown += new MouseButtonEventHandler(c1Chart1_MouseLeftButtonDown);
  5.             this.c1Chart1.MouseLeftButtonUp += new MouseButtonEventHandler(c1Chart1_MouseLeftButtonUp);
  6.         }

  7.         Point mouseDown;
  8.         Point mouseUp;
  9.         void c1Chart1_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
  10.         {
  11.             mouseUp = e.GetPosition(this.c1Chart1);

  12.             double xd = System.Math.Abs(mouseDown.X - mouseUp.X);
  13.             double yd = System.Math.Abs(mouseDown.Y - mouseUp.Y);

  14.             if (xd > 5 && yd > 5)
  15.             {
  16.             }
  17.         }

  18.         void c1Chart1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  19.         {
  20.             mouseDown = e.GetPosition(this.c1Chart1);
  21.         }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部