绘制ImageView

时间:2019-05-15 14:06:02

标签: java android canvas bitmap

我正在尝试绘制图像,稍后将其与图纸一起保存。我的xml仅具有ImageView,并且尝试覆盖onDraw。它仅使de Canvas可以工作,但没有图像。

public class Body1 extends View {

    public LayoutParams params;
    private Path path = new Path();
    private Paint brush = new Paint();


    public Body1(Context context) {
        super(context);

        brush.setAntiAlias(true);
        brush.setColor(Color.MAGENTA);
        brush.setStyle(Paint.Style.STROKE);
        brush.setStrokeJoin(Paint.Join.ROUND);
        brush.setStrokeWidth(8f);

        params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);


    }

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

        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                path.moveTo(pointX, pointY);
                return true;
            case MotionEvent.ACTION_MOVE:
                path.lineTo(pointX, pointY);
                break;
            default:
                return false;
        }
        postInvalidate();
        return false;
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawPath(path, brush);
    }
}

1 个答案:

答案 0 :(得分:0)

好,您走对了路。 您缺少的是无效调用,它将导致操作系统调用视图的OnDraw。

每当您要更新视图时,调用无效。但是请注意,您的类只有一个路径对象,因此只会绘制最后一段。

如果我没记错的话,您应该持有ArrayList个对象中的一个Path。 在onDraw中,您应该遍历它们,并将它们一个接一个地绘制。