关于Paint 画笔

画笔一般在绘制View的时候会用到。绘制界面首先需要调整画笔,然后绘制到画布上面,才能在界面浏览。之前我们做过一个自定义View,自定义View中就使用了画笔。


Paint常用方法

图像先关

setARGB(int a,int r,int g,int b); 

设置绘制的颜色,a代表透明度,r,g,b代表颜色值。 

setAlpha(int a); 

设置绘制图形的透明度。

setColor(int color);

设置绘制的颜色,使用颜色值来表示,该颜色值包括透明度和RGB颜色。

setAntiAlias(boolean aa);

设置是否使用抗锯齿功能,会消耗较大资源,绘制图形速度会变慢。

setDither(boolean dither); 

设定是否使用图像抖动处理,会使绘制出来的图片颜色更加平滑和饱满,图像更加清晰 

setFilterBitmap(boolean filter); 

如果该项设置为true,则图像在动画进行中会滤掉对Bitmap图像的优化操作,加快显示速度,本设置项依赖于dither和xfermode的设置

setMaskFilter(MaskFilter maskfilter);

设置MaskFilter,可以用不同的MaskFilter实现滤镜的效果,如滤化,立体等

setColorFilter(ColorFilter colorfilter);

设置颜色过滤器,可以在绘制颜色时实现不用颜色的变换效果 

setPathEffect(PathEffect effect);

设置绘制路径的效果,如点画线等

setShader(Shader shader);

设置图像效果,使用Shader可以绘制出各种渐变效果 

setShadowLayer(float radius ,float dx,float dy,int color);

在图形下面设置阴影层,产生阴影效果,radius为阴影的角度,dx和dy为阴影在x轴和y轴上的距离,color为阴影的颜色

setStyle(Paint.Style style);

设置画笔的样式,为FILL,FILL_OR_STROKE,或STROKE

setStrokeCap(Paint.Cap cap);

当画笔样式为STROKE或FILL_OR_STROKE时,设置笔刷的图形样式,如圆形样Cap.ROUND,或方形样式Cap.SQUARE

setSrokeJoin(Paint.Join join); 

设置绘制时各图形的结合方式,如平滑效果等

setStrokeWidth(float width);

当画笔样式为STROKE或FILL_OR_STROKE时,设置笔刷的粗细度

setXfermode(Xfermode xfermode); 

设置图形重叠时的处理方式,如合并,取交集或并集,经常用来制作橡皮的擦除效果 

文字相关

setFakeBoldText(boolean fakeBoldText); 

模拟实现粗体文字,设置在小字体上效果会非常差 

setSubpixelText(boolean subpixelText); 

设置该项为true,将有助于文本在LCD屏幕上的显示效果

setTextAlign(Paint.Align align); 

设置绘制文字的对齐方向 

setTextScaleX(float scaleX);

设置绘制文字x轴的缩放比例,可以实现文字的拉伸的效果 

setTextSize(float textSize); 

设置绘制文字的字号大小

setTextSkewX(float skewX); 

设置斜体文字,skewX为倾斜弧度

setTypeface(Typeface typeface);

设置Typeface对象,即字体风格,包括粗体,斜体以及衬线体,非衬线体等 

setUnderlineText(boolean underlineText);

设置带有下划线的文字效果

setStrikeThruText(boolean strikeThruText); 

设置带有删除线的效果


简单例子

package com.example.test.com;


import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.View;

public class MyView extends View {

    private Paint mPaint;

    public MyView(Context context) {
        super(context);
    }

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        mPaint = new Paint();
        //设置画笔颜色   
        mPaint.setColor(Color.DKGRAY);
        //设置填充   
        mPaint.setStyle(Style.FILL);
        //设置透明度
        mPaint.setAlpha(150);
        //锯齿
        mPaint.setAntiAlias(true);
        //画一个矩形,前俩个是矩形左上角坐标,后面俩个是右下角坐标   
        canvas.drawRect(new Rect(10, 10, 100, 100), mPaint);
        mPaint.setColor(Color.BLUE);
        mPaint.setTextSize(14);
        //绘制文字   
        canvas.drawText("Hello WORLD", 10, 110, mPaint);
    }

}