在手指画的情况下,Path.quadTo和Path.lineTo有什么区别?

Sta*_*ree 2 graphics android drawing

Android的APIDemos中有一个FingerPaint演示。下面是手指在屏幕上移动时的代码。

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我注意到这个演示使用mPath.quadTo,我认为应该是mPath.lineTo,我尝试了。下面是我的代码:

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.lineTo(x, y);
        mX = x;
        mY = y;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我再次尝试,似乎没有什么不同,为什么Google使用quadTo?

我在游戏程序中听说,他们使用quadTo绘制手指画,但是为什么呢?请帮助... thx

Gab*_*han 8

使用二次线(基本上是某种椭圆)将曲线四倍。LineTo是一条直线。QuadTo可以消除锯齿状的变化。