Динамическое добавление точек в контур на холсте - PullRequest
0 голосов
/ 19 июня 2020

Я новичок в Android, я учился рисовать на холсте. Как я могу добавлять новые точки в Path и динамически их рисовать? Прямо сейчас я вызываю функцию (setPoints ()) моего пользовательского класса представления из MainActivity и передаю ей точки, но путь не отображается. Кто-нибудь может предложить правильный способ или помочь мне с этим? Я застрял на этом.

public class RenderPointsMap extends View {

public int width;
public int height;
private Bitmap mBitmap;
private Canvas mCanvas;
private Path mPath;
Context context;
private Paint mPaint;
private float mX, mY;
private static final float TOLERANCE = 5;
Vector<PointF> temp = new Vector<>();
 PointF usethis  = new PointF();


public RenderPointsMap(Context c, AttributeSet attrs) {
    super(c, attrs);
    context = c;

    // we set a new Path
    mPath = new Path();

    // and we set a new Paint with the desired attributes
    mPaint = new Paint();
    mPaint.setAntiAlias(true);
    mPaint.setColor(Color.BLACK);
    mPaint.setStyle(Paint.Style.STROKE);
    mPaint.setStrokeJoin(Paint.Join.ROUND);
    mPaint.setStrokeWidth(2f);


}

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);

    // your Canvas will draw onto the defined Bitmap
    mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
    mCanvas = new Canvas(mBitmap);
}

// override onDraw
@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    // draw the mPath with the mPaint on the canvas when onDraw
    mCanvas = canvas;
    canvas.drawPath(mPath, mPaint);
}

public void setPoints(Vector<PointF> points){
    mPath.moveTo(200, 200);
    for(int i=1;i<points.size();i++)
        mPath.lineTo(points.get(i).x, points.get(i).y);

    Toast.makeText(getContext(), "Points are set", Toast.LENGTH_SHORT).show();
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...