2 Stimmen

Was ist der Zweck dieser Funktion in Android 2D-Grafiken (aus der FingerPaint-App in Apidemos)?

Ich habe versucht, die Fingerfarbe-Anwendung in Api-Demos in Android zu verstehen. Es ist eine Skizzen-App.

@Override
    public boolean onTouchEvent(MotionEvent event) {
        float x = event.getX();
        float y = event.getY();

        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                touch_start(x, y);
                invalidate();
                break;
            case MotionEvent.ACTION_MOVE:
                touch_move(x, y);
                invalidate();
                break;
            case MotionEvent.ACTION_UP:
                touch_up();
                invalidate();
                break;
        }
        return true;
    }
}
 //Called when you place your finger on the screen.
 private void touch_start(float x, float y) {
            mPath.reset();
            mPath.moveTo(x, y);
            mX = x;
            mY = y;
        } 

   //called when you move your finger on the screen
  private void touch_move(float x, float y) {
        float dx = Math.abs(x - mX);
        float dy = Math.abs(y - mY);
        if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {
            mPath.quadTo(mX, mY, (x + mX)/2, (y + mY)/2);
            mX = x;
            mY = y;
        }
    }    

//called when you lift your finger
private void touch_up() {
        mPath.lineTo(mX, mY);
        // commit the path to our offscreen
        mCanvas.drawPath(mPath, mPaint);
        // kill this so we don't double draw
        mPath.reset();
    }

Mein Zweifel ist in der Funktion void touch_move(float x, float y) Die Funktion wird aufgerufen, wenn Sie Ihren Finger über den Bildschirm bewegen. mPath.quadTo(mX, mY, (x + mX)/2, (y + mY)/2) genannt wird und welches Konzept hinter der Verwendung von (x+mX)/2,(y+mY)/2 Es wäre toll, wenn jemand erklären könnte, was hier passiert.

P.S.: Ich habe bereits die Entwicklungsseite durchgesehen und gegoogelt, also bitte keine Links posten, die auf die Entwicklungsseite verweisen.

0voto

J. Taylor Punkte 3980

Für eine Erklärung von quadTo(), das zum Zeichnen von Bezier-Kurven verwendet wird, siehe: http://developer.Android.com/reference/Android/graphics/Path.html#quadTo%28float,%20float,%20float,%20float%29 ...

Was (x+mX)/2,(y+mY)/2 anbelangt, so sieht es sehr ähnlich aus wie bei der lineare Mittelpunktsformel für mich, aber ich bin mir nicht sicher, wie es hier verwendet wird ... es sieht so aus, als ob es damit zu tun haben könnte, den Punkt zu finden, der auf dem Mittelpunkt der Linie zwischen den Punkten (x,y) und (mX, mY) liegt

Es scheint, dass Sie auch ein wenig über die folgenden Themen lesen sollten Konstruktion von Bezier-Kurven wenn Sie verstehen wollen, was hier vor sich geht.

0voto

Will Hartung Punkte 110997

Es sieht so aus, als würde eine Kurve vom Anfang bis zum nächsten Punkt hinzugefügt.

Siehe .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X