#Paint类使用详解
Paint 代表了Canvas上的画笔、画刷、颜料等等
方法 | 作用 |
---|---|
setARGB(int a, int r, int g, int b) | 设置Paint对象颜色,参数一为alpha透明通道 |
setAlpha(int a) | 设置alpha不透明度,范围为0~255 |
setMaskFilter(MaskFilter maskfilter) | 滤镜效果 |
setStyle(Style style); | 设置画笔风格 |
setStrokeWidth(int width) | 设置画笔空心线宽 |
setDither(boolean dither) | 设定是否使用图像抖动处理,使绘制出的图片颜色更平滑饱满,图像更加清晰 |
setAntiAlias(boolean aa) | 是否抗锯齿 |
setColor(int color) | 设置颜色,这里Android内部定义的有Color类包含了一些常见颜色定义 |
setFakeBoldText(boolean fakeBoldText) | 设置伪粗体文本 |
setLinearText(boolean linearText) | 设置线性文本 |
setPathEffect(PathEffect effect) | 设置路径效果 |
setRasterizer(Rasterizer rasterizer | 设置光栅化 |
setShader(Shader shader) | 设置阴影 |
setTextAlign(Paint.Align align) | 设置文本对齐 |
setTextScaleX(float scaleX) | 设置文本缩放倍数,1.0f为原始 |
setTextSize(float textSize) | 设置字体大小 |
setTypeface(Typeface typeface) | 设置字体,Typeface包含了字体的类型,粗细,还有倾斜、颜色等。 |
setUnderlineText(boolean underlineText) | 设置下划线 |
setStrokeCap(CAP cap) | 线段末端效果 |
setStrokeJoin(Join join) | 闭合图形的连接处效果 |
先看一个简单的demo:
public class DemoView extends View {
Paint paint = new Paint();
Path path = new Path();
public DemoView(Context context) {
this(context,null);
}
public DemoView(Context context, @Nullable AttributeSet attrs) {
this(context, attrs,0);
}
public DemoView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init(){
paint.setAntiAlias(false);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(10);
paint.setColor(Color.parseColor("#ff0000"));
//path在后面进行讲解
path = new Path();
path.moveTo(150, 400);
path.lineTo(450, 400);
path.lineTo(300, 150);
path.close();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawPath(path,paint);
}
}
效果如图:
下面几个重要属性详细介绍:
###setAlpha(int a) —透明度
paint.setAlpha(100);
###setAntiAlias(boolean aa) —是否抗锯齿
false不抗锯齿
paint.setAntiAlias(false);
true抗锯齿
paint.setAntiAlias(true);
###setStyle(Style style)—设置画笔风格
Style.FILL:实心
Style.FILL_AND_STROKE:同时显示实心和空心
Style.STROKE:空心
paint.setStyle(Paint.Style.STROKE);
效果如图:
paint.setStyle(Paint.Style.FILL);
###setStrokeWidth—空心画笔宽度
setStrokeWidth(int width)
###setStrokeCap(CAP cap)—线段末端效果