安卓绘图/画布问题;绘制平滑曲线

3
我应该如何在Android上使用手指在触摸屏上绘制时获得平滑曲线而不是点或圆?我正在使用以下代码-
public class DrawView extends View implements OnTouchListener {
private static final String TAG = "DrawView";

List<Point> points = new ArrayList<Point>();
Paint paint = new Paint();

public DrawView(Context context) {
    super(context);
    setFocusable(true);
    setFocusableInTouchMode(true);

    this.setOnTouchListener(this);

    paint.setColor(Color.WHITE);
    paint.setAntiAlias(true);
}

     @Override
    public void onDraw(Canvas canvas) {
    for (Point point : points) {
        canvas.drawCircle(point.x, point.y, 5, paint);
        // Log.d(TAG, "Painting: "+point);
    }
}

public boolean onTouch(View view, MotionEvent event) {
    // if(event.getAction() != MotionEvent.ACTION_DOWN)
    // return super.onTouchEvent(event);
    Point point = new Point();
    point.x = event.getX();
    point.y = event.getY();
    points.add(point);
    invalidate();
    Log.d(TAG, "point: " + point);
    return true;
}
}

class Point {
float x, y;

@Override
public String toString() {
    return x + ", " + y;
}
}
3个回答

5

API演示包中提供了一个FingerPaint应用程序;您可以查看它。这是链接


0

我想你需要使用某种插值方法并自己填补空缺。如果系统必须为您的手指移动过的每个像素发送触摸事件,那么它将完全瘫痪。


谢谢Steve。但是,我不想使用canvas.drawCircle(point.x, point.y, 5, paint);来绘制小圆圈,而是想要绘制连续的曲线。我不知道如何进行插值,如果有一种在Android中简单绘制/绘画曲线的方法,那么我想使用它。 - Wrapper
在Finger paint中,您可以使用贝塞尔曲线连接由触摸界面检测到的相邻点。 - Samuh


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接