【问题标题】:Create my own Slider for multitouch application为多点触控应用程序创建我自己的 Slider
【发布时间】:2012-01-17 12:12:45
【问题描述】:

WPF 中的 Slider 控件无法正常工作。

我需要同时滑动 2 个不同的控件(滑块)(每个用一根手指)。 当我触摸第一个 Slider 时,它会获得所有焦点,而我的第二个触摸设备无法触摸其他任何东西。

所以我需要创建自己的 Slider (MySlider),它继承自 Slider。 我做了4种方法:

protected override void OnTouchDown(TouchEventArgs e)
protected override void OnTouchUp(TouchEventArgs e)
protected override void OnTouchLeave(TouchEventArgs e)
protected override void OnTouchMove(TouchEventArgs e)

但是有没有办法像用鼠标一样移动滑块?或者我每次触摸设备移动时都需要计算:

protected override void OnTouchMove(TouchEventArgs e)
{
    base.OnTouchMove(e);

    if (this.Value <= this.Maximum && this.Value >= this.Minimum)
    {
        Point newPoint = e.GetTouchPoint(this).Position;
        this.Value += (this.lastPoint.Y - newPoint.Y);
        lastPoint = newPoint;
    }  
    e.Handled = true;
}

在这种情况下,移动的速度与手指的移动速度不同......

【问题讨论】:

  • 没有人能帮我解决这个问题吗?为多点触控创建我自己的滑块...

标签: wpf slider touch multi-touch


【解决方案1】:

您可能想查看Surface 2.0 SDK,因为它包含一个名为SurfaceSlider 的类,我相信它允许同时更新两个或多个滑块。此 SDK 可用于针对为 Windows 7 构建的应用程序。

【讨论】:

    【解决方案2】:

    我不熟悉 WPF 中的多点触控事件,因此无法为您提供帮助。但是,要将鼠标移动到与您触摸相同的位置,您可以查看此答案here

    您假设控件的宽度等于最大值的问题。您需要取出实际宽度相对于最大值和最小值之间差异的因子。

    这只能通过事件来完成,因为没有路由事件或鼠标位置的 DP。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多