当前位置:编程学习 > C#/ASP.NET >>

如何采集鼠标移动过程中的坐标位置?

在一个Winform窗体上,需要采集鼠标按下左键到释放左键之间划过的点的坐标。
原来是在Mouse_move事件中写的,但发现采集出来的点不是线性的,跟鼠标滑动速度有关。滑动快,采集的鼠标点就比较少;滑动慢,采集的点就多。
因为在一个窗体上,鼠标滑动的线条肯定是按照屏幕像素一个一个滑动过去的,所以想采集到每隔一个像素的坐标。
求解决方案。
--------------------编程问答-------------------- 可以考虑用 ReactiveExtension,参考:

http://blog.csdn.net/fangxinggood/article/details/7685393 --------------------编程问答-------------------- Rx 可以设置一个阀值,在多少ms以内的点就舍弃。当然,在你现在代码的基础上,修改一下也能实现。

记录下两个点的 timespan 如果小于多少 ms 的就放弃即可。 --------------------编程问答-------------------- 一般在鼠标移动事件中就够用了,鼠标移动不是逐个像素的,因为有采集精度的限制,移动快了就会跳过多个像素。要尽量精确需要用鼠标钩子。 --------------------编程问答--------------------
引用 3 楼 Mackz 的回复:
一般在鼠标移动事件中就够用了,鼠标移动不是逐个像素的,因为有采集精度的限制,移动快了就会跳过多个像素。要尽量精确需要用鼠标钩子。

问一下,如果使用钩子的话,有没有具体的代码实现呢?可以满足获取每个像素吗?谢谢了。 --------------------编程问答-------------------- 希望找到合适的具体实现的源代码,谢谢大家了! --------------------编程问答-------------------- 记录鼠标点下的坐标和当前的坐标,你鼠标经过的所有点都在这两个点所确定的矩形中。 --------------------编程问答--------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseMove);

        }

        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            this.Text = string.Format("X={0},Y={1}", e.X, e.Y);
        }
    }
}

这样就能拿到鼠标的XY坐标啦
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,