Android Studio中初学Canvas心得,在点击位置画圆。

  要实现在图片上画图选择区域的功能,就要实现加载一个图片,在图片上画圆画线的操作,如图
   Android Studio中初学Canvas心得,在点击位置画圆。_第1张图片

  首先明白一点,canvas是一个画图的工具,我们是要在Bitmap上作画,作画的笔是paint。canvas只是提供了画画的方法而已。下面的代码中加载图片不是重点,就不展开说了。

Glide.with(MainActivity.this).load(outputUri).into(imgPic);//外部的图片加载到imgPic中
mBmp = getBitmapFromUri(outputUri);//getBitmapFromUri是我自己写的函数。返回一个Bitmap
mBmp_new1 = mBmp.copy(Bitmap.Config.ARGB_8888,true);
canvas = new Canvas(mBmp_new1);//canvas画画的画布(bitmap)要求可修改,不可以直接在原图上画,要做一个复制,在复制上画好了再加载进去
paint = new Paint();

  画圆是canvas里面有drawCircle(x,y,radius,paint)方法。x,y是坐标(图片左上角是(0,0)),radius是半径(看不到画的点可能是因为半径太小了,搞大点),paint就是画笔了。

  然后我们要获得图片的被点击位置,onclick()方法里是没有的(我没找到),但我找到了onTouch()方法里有。于是有了如下代码:

imgPic.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
       
        canvas.drawCircle(motionEvent.getX(),motionEvent.getY(),20,paint);
        imgPic.setImageBitmap(mBmp_new1);//画好了以后要加载进imgPic,才能看到
        
        return false;
    }
});

  我最上面的图片还画了线,用的是canvas.drawLine()的方法,这个函数具体用法就不说了,可以很轻松的查到。

  我学这个地方最大的收获就是知道了canvas只是一个画图的工具,本身并不是画布。paint是笔,在我现在的需求里,bitmap是那个画布。

  希望对搜到这篇文章的你有所帮助。

你可能感兴趣的:(移动开发)