Android-2D绘图基础-更新中

概述

Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0

大部分2D使用的api都在android.graphicsandroid.graphics.drawable包中。他们提供了图形处理相关的: Canvas、ColorFilter、Point(点)和RetcF(矩形)等,还有一些动画相关的:AnimationDrawable、 BitmapDrawable和TransitionDrawable等。以图形处理来说,我们最常用到的就是在一个View上画一些图片、形状或者自定义的文本内容,这里我们都是使用Canvas来实现的。你可以获取View中的Canvas对象,绘制一些自定义形状,然后调用View. invalidate方法让View重新刷新,然后绘制一个新的形状,这样达到2D动画效果。

Canvas:画布,用来直接在View上绘制诸如矩形,圆形,文字,位图等图形。
它提供了各种API:

填充:

public void drawARGB(int a, int r, int g, int b)  

public void drawColor(int color)  

public void drawRGB(int r, int g, int b)  

public void drawColor(int color, PorterDuff.Mode mode)

因为Canvas内部维持了一个mutable Bitmap,所以,它可以使用这些颜色去填充整个Bitmap。并且在API中提到(restricted to the current clip)受限制于clip的范围

绘制几何图像
canvas.drawArc (扇形)

canvas.drawCircle(圆)

canvas.drawOval(椭圆)

canvas.drawLine(线)

canvas.drawPoint(点)

canvas.drawRect(矩形)

canvas.drawRoundRect(圆角矩形)

canvas.drawVertices(顶点)

cnavas.drawPath(路径)

同时受限于clip和matrix

绘制图片

canvas.drawBitmap (位图)

canvas.drawPicture (图片)

同时受限于clipmatrix

文本
canvas.drawText

上面列举的是Canvas所能绘制的基本内容,在实际使用中,可以使用各种过滤或者过度模式,或者其他手段,来达到绘制各种效果。

过渡模式:

Xfermode,AvoidXfermode,PixelXorXfermode,PorterDuffXfermode

PorterDuff

过滤

1、rgb过滤 ColorFilter ,ColorMatrixFilter,PorterDuffColorFilter,LightingColorFilter,PorterDuffColorFilter

2、alpha过滤 MaskFilter,BlurMaskFilter,EmbossMaskFilter

3、DrawFilter,PaintFlagsDrawFilter

变换

Matrix,Camera,ColorMatrix

颜色

Color

渐变

Shader

BitmapShader,ComposeShader,LinearGradient,RadialGradient,SweepGradient

Canvas的变换
如果只是那些简单的draw…方法,那么canvas的功能就太单调了。Canvas还提供了一系列位置转换的方法:rorate、scale、translate、skew(扭曲)等。

另外还常用的两个方法是:

  • save:用来保存Canvas的状态。save之后,可以调用Canvas的平移、放缩、旋转、错切、裁剪等操作。
  • restore:用来恢复Canvas之前保存的状态。防止save后对Canvas执行的操作对后续的绘制有影响。save和restore要配对使用(restore可以比save少,但不能多),如果restore调用次数比save多,会引发Error。

Paint:画笔,作用于画布上,用来设置我们绘制图案的一些参数,如线条宽度(粗细),颜色等。常用的设置有:

setetAntiAlias: 设置画笔的锯齿效果。

setColor: 设置颜色

setARGB: 设置的ARGB色彩值。

setAlpha: 设置Alpha值

setTextSize: 设置字体尺寸。

setStyle: 设置画笔风格,空心或者实心。

setStrokeWidth: 设置空心的边框宽度。

setShader:设置阴影效果

setTextSkewX:设置文字倾斜度

Color:颜色类,主要是提供画笔的颜色等。可以定义在res/values/colors.xml中,也可以直接用系统提供的颜色值,更可通知Color.parseColor()来设置颜色。常用的系统颜色值如:

Color.BLACK;
Color.WHITE;
Color.BLUE;
Color.RED;
Color.YELLOW……

你可能感兴趣的:(android,canvas,paint,2D绘图)