2011-01-06 5 views
1

Was ist die richtige Methode, um rohe Berührungspunkte auf Bildschirmkoordinaten in MonoTouch oder MonoDroid zu übersetzen? Mein Code funktioniert gut auf dem Emulator, aber die Punkte sind auf einem Gerät ungenau. Hier ist, was ich bisher:MonoTouch/MonoDroid - Übersetzen Sie Raw touch-Koordinaten in Bildschirmkoordinaten

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

Antwort

0

Für Monotouch können Sie ConvertPointToView verwenden, die Bestandteil aller UIViews ist. Es wird der Punkt auf die richtige konvertieren für die Ansicht, die Sie in geben koordinieren