Canvas在Android里是一个重要的类,主要功能显而易见,用于绘图,说这个类重要,除了基本的绘图功能,主要原因在于每一个控件都离不开它,尤其是当我们自定义一个控件时在onDraw方法里,主要利用canvas这个类去处理,而这个类方法众多,能实现的功能也很多,今天开始不间断更新相关内容,大家也一起讨论下:
step 1:旋转 也就是涉及到canvas.rotate相关的方法
在我刚开始用canvas进行绘图的时候曾经犯了一个错误就是canvas.rotate(angle),这个方法我以为是它是以画布中心点去旋转,结果画出的图总是和预想的不太一样,后来发现默认的旋转中心是左上角的(0,0)点,切记。此外旋转还提供了另一个方法canvas.rotate(angle,x,y)方法,用这个方法可以实现基于某一点去旋转的功能。并且这个旋转可以理解为先按照不旋转状态绘制出形状,然后画布进行了旋转。
step 2: Canvas 状态的保存和回滚(canvas.save(),canvas.restore())
这个的用法,举个例子大家就明白了,比方说我想化两个矩形,第一个旋转30度,第二个不旋转,这个怎么做呢?
//首先存储下当前的画布状态(也就是未进行旋转)
canvas.save();
//以矩形中心旋转30度,当前的画布状态为以10,10为中旋转了30度