2011-01-06 3 views
1

Quelle est la bonne façon de traduire les points de contact brut à l'écran les coordonnées dans MonoTouch ou MonoDroid? Mon code fonctionne bien sur l'émulateur mais les points sont inexacts sur un périphérique. Voici ce que j'ai jusqu'à présent:MonoTouch/MonoDroid - Traduire les coordonnées touche Raw coordonnées écran

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); 
    } 

Répondre

0

Pour MonoTouch vous pouvez utiliser ConvertPointToView qui fait partie de tous UIViews. Il convertira le point à la bonne coordination pour la vue que vous passez

Questions connexes