本文主要是介绍Android 画布canvas concat(Matrix matrix),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
void concat(Matrix matrix)
Preconcat the current matrix with the specified matrix.
可以理解成对matrix的变换应用到canvas上的所有对象。
参数Matrix是The Matrix class holds a 3x3 matrix for transforming coordinates.意思。可以理解成它是用来处理图形的,它是一个3*3的矩形。
如何使用:
需求:图片从坐标(20,20)开始画
关键代码:
matrix.setTranslate(20f,20f)//画布开始点坐标移到(20,20)
完整代码:
package com.lxm.apipro.canvas.d3import android.content.Context
import android.graphics.*
import android.util.AttributeSet
import android.view.View
import com.lxm.apipro.Rclass CanvasView : View {private var mContext: Context? = nullprivate var mBitmap: Bitmap = BitmapFactory.decodeResource(resources, R.drawable.pic1)private var mPaint: Paint? = nullconstructor(context: Context?) : this(context, null)constructor(context: Context?, attrs: AttributeSet?) : this(context, attrs, 0)constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context,attrs,defStyleAttr) {mContext = contextmPaint = Paint()mPaint?.isAntiAlias = true}override fun onDraw(canvas: Canvas?) {super.onDraw(canvas)//需求:图片从坐标(20,20)开始画canvas?.save()var matrix = Matrix()matrix.setTranslate(20f,20f)//画布开始点坐标移到(20,20)canvas?.concat(matrix)canvas?.drawBitmap(mBitmap,0f,0f,null)canvas?.restore()}}
效果:
未添加matrix.setTranslate(20f,20f)//画布开始点坐标移到(20,20)时效果:
添加matrix.setTranslate(20f,20f)//画布开始点坐标移到(20,20)时效果:
这篇关于Android 画布canvas concat(Matrix matrix)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!