软件编程
位置:首页>> 软件编程>> Android编程>> Android画板开发之基本画笔功能

Android画板开发之基本画笔功能

作者:tpnet  发布时间:2023-01-09 07:26:21 

标签:Android,画板,画笔

一、简介

这是画板系列的第一篇,一步步开始,从简单的画板,到功能稍微齐全一点的画板,例如基本画笔、橡皮擦、背景、文字、撤销、反撤销、保存等

这篇带大家实现一个最简单的画板,前提是需要对自定义View有一定的了解。

用的是kotlin语言

Android画板开发之基本画笔功能

二、实现

分析如何实现: 定义了画笔和Path,然后在触摸屏幕的时候,手指一边移动一边进行path的滑动,绘制。这就完成了一个最简单的画笔功能。

下面几十行代码完成这个


class TPView(context: Context,attr:AttributeSet ) : View(context,attr) {

private var preX: Float = 0.0f //上一次的触摸点x坐标
 private var preY: Float = 0.0f //上一次触摸点y坐标

var mPath = Path()  //path路径

//画笔
 private var mPaint = Paint(Paint.ANTI_ALIAS_FLAG or Paint.DITHER_FLAG)

init {
   //画笔为实心
   mPaint.style = Paint.Style.STROKE
   //颜色
   mPaint.color = Color.RED
   //笔触为圆形
   mPaint.strokeCap = Paint.Cap.ROUND
   //画笔大小
   mPaint.strokeWidth = 10f
   //View的背景颜色
   setBackgroundColor(Color.WHITE)
 }

override fun onDraw(canvas: Canvas) {
   super.onDraw(canvas)
   //画线
   canvas.drawPath(mPath,mPaint)
 }

override fun onTouchEvent(event: MotionEvent): Boolean {

when(event.action){
     MotionEvent.ACTION_DOWN -> { //手指按下的时候
       //将起始点移动到当前坐标
       mPath.moveTo(event.x,event.y)
       //记录上次触摸的坐标,注意ACTION_DOWN方法只会执行一次
       preX = event.x
       preY = event.y
     }
     MotionEvent.ACTION_MOVE -> { //手指移动的时候

//绘制圆滑曲线,即贝塞尔曲线,贝塞尔曲线这个知识自行了解
       mPath.quadTo(preX,preY,event.x,event.y)

preX = event.x
       preY = event.y
     }
   }

//重新绘制,会调用onDraw方法
   invalidate()
   return true
 }

}

来源:https://blog.csdn.net/niubitianping/article/details/78400588

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com