1

ユーザーがタッチスクリーンに描画できるようにするコードを書き込もうとしています。

GestureService または ManipulationStarted/Delta のいずれかを使用する場合、ユーザーが指を動かし始めたときに発生する「一時停止」があります。指が開始点から十分に離れている場合にのみ、ManipulationDelta イベントの取得が開始されます (など)。 GestureService についても同じことが言えます)。

このしきい値を回避するにはどうすればよいですか? 描画コードではうまく機能しません。

4

1 に答える 1

4

AppHub フォーラムで同様の質問に出くわしたので、ブログに書きました。 https://invokeit.wordpress.com/2012/04/27/high-performance-touch-interface-wpdev-wp7dev/

Manipulation Delta および Gesture サービスは、高レベルのタッチ インターフェースです。パフォーマンスが必要な場合は、低レベル インターフェイスの使用を検討してください: Touch と TouchReported というイベント。多くのプロジェクトで主に(描画/位置検出のために)それらを使用する傾向があります

detech touchにプラグインしたいイベントは

Touch.FrameReported += Touch_FrameReported;

これは Loaded イベントで行うことができます。Touch_FrameReported ハンドラーの実装を次に示します。これで WorkArea は Canvas です。これも WritableBitmap と組み合わせて使用​​しました

private void Touch_FrameReported(object sender, TouchFrameEventArgs e)
{
    try
    {
        // Determine if finger / mouse is down
        point = e.GetPrimaryTouchPoint(this.workArea);

        if (point.Position.X < 0 || point.Position.Y < 0)
            return;

        if (point.Position.X > this.workArea.Width || point.Position.Y > this.workArea.Height)
            return;

        if (this.lbLetter.SelectedIndex == -1)
            return;

        switch (point.Action)
        {
            case TouchAction.Down:
                draw = true;
                old_point = point;
                goto default;

            case TouchAction.Up:
                draw = false;
                break;

            default:
                Draw();
                break;
        }
    }
    catch
    {
        MessageBox.Show("Application encountered error processing last request.");
    }
}

これは、高レベルのインターフェースよりもはるかにうまく機能します。

于 2012-04-27T08:56:18.787 に答える