如何 捕获鼠标

cfsjjjj 2010-08-25 03:19:59
鼠标动作 按下左键 后释放 释放后鼠标移动的时候捕获( CaptureMouse好像不行,它只能在按下时捕获 )
...全文
30 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcp147572931 2010-08-25
  • 打赏
  • 举报
回复

bool mouseLeftButtonDown = true;

private void MultiScaleImage_MouseMove(object sender, MouseEventArgs e)
{

}
/// <summary>
/// 鼠标移动
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void LayoutRoot_MouseMove(object sender, MouseEventArgs e)
{
if (mouseLeftButtonDown == true)
{
return;
}
else
{
Point p = e.GetPosition(LayoutRoot);
MyText.Text = "X坐标"+p.X+"Y坐标"+p.Y;
}
}
/// <summary>
/// 鼠标左键弹起
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void LayoutRoot_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
mouseLeftButtonDown = false;
}
/// <summary>
/// 鼠标左键按下
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void LayoutRoot_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
mouseLeftButtonDown = true;
}
  • 打赏
  • 举报
回复
你问的不是太清楚,释放后移动移动的时候捕获,那应该就是MouseLeftButtonUp事件发生时的坐标

这里又涉及到你想得到针对哪个控件的坐标呢,比如说,一个Canvas里有一个Rectangle,当鼠标放在Rectangle上的时候,你若想得到相对Rectanble的坐标就要在Rectangle的MouseLeftButtonUp事件中写代码,如:
private void Rectangle_MouseLeftButtonUp(object sender, MouseEventArgs e)
{
Point p = e.GetPosition(e.Source as FrameworkElement);
Status.Text = String.Format("坐标位置({0}:{1})",p.X,p.Y);
}

同理,如果你想得到相对于Canvas的坐标就要用Canvas的MouseLeftButtonUp事件去处理。

更进一步,当鼠标在Rectangle的外面的时候想得到相对Rectangle的坐标,就要在Rectangle的MouseLeftButtonUp事件中这样处理:
void Canvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
Point pt = e.GetPosition(RectangleName);
Status.Text = pt.X + " : " + pt.Y;
}

另外,针对一系统的鼠标处理事件,还有一个知识点:路由事件,值得去学习学习。
这里说的有点多了,你可以参考msdn上的内容。
fanshaoer 2010-08-25
  • 打赏
  • 举报
回复
this.MouseMove +=new MouseEventHandler(事件方法);

8,737

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧