【问题标题】:Android paint/canvas issue; drawing smooth curvesAndroid 绘画/画布问题;绘制平滑曲线
【发布时间】:2011-02-08 00:01:58
【问题描述】:

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

【问题讨论】:

    标签: android android-canvas paint draw curvesmoothing


    【解决方案1】:

    API 演示包中捆绑了一个 FingerPaint 应用程序;你可以看看那个。这是link

    【讨论】:

      【解决方案2】:

      我想您必须使用某种插值并自己填补空白。如果它必须为您的手指移动的每个像素发送触摸事件,它将完全杀死系统。

      【讨论】:

      • 谢谢史蒂夫。但不是使用 canvas.drawCircle(point.x, point.y, 5, paint);我只想画一条连续的曲线,因为我得到的是小圆圈。我不知道如何进行插值,所以如果有一种方法/方法可以在 Android 中简单地绘制/绘制曲线,那么我想使用它。
      • 在手指绘画中,您可以使用贝塞尔曲线将触摸界面检测到的相邻点连接起来。
      【解决方案3】:
      猜你喜欢
      • 2022-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多