1

MonoTouchまたはMonoDroidで生のタッチポイントを画面座標に変換する適切な方法は何ですか? 私のコードはエミュレーターではうまく動作しますが、デバイスではポイントが不正確です。これが私がこれまでに持っているものです:

    private void Initialize()
    {
        this.Touch += TouchView_Touch;
    }

    void TouchView_Touch(object sender, View.TouchEventArgs e)
    {
        e.ReturnValue = true;
        touchPoints.Add(e.Event.RawX);
        touchPoints.Add(e.Event.RawY);
        this.Invalidate();
    }

    protected override void OnDraw(Android.Graphics.Canvas canvas)
    {
        base.OnDraw(canvas);
        canvas.DrawColor(Color.White);
        Paint p = new Paint();
        p.Color = Color.Black;

        Matrix m = new Matrix();
        canvas.GetMatrix(m);
        float[] destination = touchPoints.ToArray();

        Matrix inverse = new Matrix();
        bool canInvert = m.Invert(inverse);
        inverse.MapPoints(destination);

        canvas.DrawPoints(destination, p);
    }
4

2 に答える 2

2

MonoDroid の場合、同じトピックに対応する StackOverflow Android の質問がいくつかあります。

ビューの絶対座標を取得する方法

View.GetLocationOnScreen(int[])またはを使用することを提案しView.GetLocationInWindow()ます。

もあります

Androidでのイベント座標とビュー座標の不一致?

View.GetLocationOnScreen()これは、デフォルト ディスプレイのスクリーン メトリックを取得するとともに使用することも示唆しています。

于 2011-02-09T13:15:05.813 に答える
0

Monotouch の場合、すべての UIView の一部である ConvertPointToView を使用できます。ポイントを渡したビューの正しい座標に変換します。

于 2011-02-03T22:43:52.367 に答える