AndroidPaint源码分析

更新时间:2023-05-03 20:48:31 阅读: 评论:0

AndroidPaint源码分析
今天学习下Paint这个类,决定从看源码开始学习。
先看类的定义就很有特点:public class Paint extends _Original_Paint ,后⾯这个_Original_Paint 是怎么个回事,希望⼤家解释,我不懂。
⽤到了Style,这个是⼀个内部的枚举类,有3种:FILL  (0),  STROKE (1),  FILL_AND_STROKE (2);
/**
* The Style specifies if the primitive being drawn is filled,
* stroked, or both (in the same color). The default is FILL.
*/
public enum Style
还有Align,仍然是⼀个内部枚举类,还是有3个值:LEFT    (0), CENTER  (1), RIGHT  (2);
/**
* Align specifies how drawText aligns its text relative to the
* [x,y] coordinates. The default is LEFT.
*/
public enum Align
有个Join,待解。。。
/**
* The Join specifies the treatment where lines and curve gments
* join on a stroked path. The default is MITER.
*/
public enum Join
还有个Cap,这个不知道⼲嘛⽤的,待查。。。
/
**
* The Cap specifies the treatment for the beginning ae开头的单词 nd ending of
* stroked lines and paths. The default is BUTT.
*/
public enum Cap
内部静态类:看代码可知,Paint和这个FontInfo关系很⼤
public static final class FontInfo {
Font mFont;
java.awt.FontMetrics mMetrics;
}
构造函数有三种:
public Paint() {
this(0);
}
public Paint(int flags) {
tFlags(flags | DEFAULT_PAINT_FLAGS);
initFont();
}
public Paint(Paint paint) {
t(paint);
initFont();
}
后⾯内容中⽤到了Typeface,个⼈认为就是⼀个字体样式的类,看它的源码,⾥⾯的内容⽐较简单。看了看后⾯的⽅法,基本都是⼀些基本的⽅法,对字体颜⾊、⼤⼩、边距的设置等等。
Android 中的画笔是 Paint类,Paint 中包含了很多⽅法对其属性进⾏设置,主要⽅法如下:
tAntiAlias: 设置画笔的锯齿效果。
tColor: 设置画笔颜⾊
tARGB: 设置画笔的a,r,p,g值。
tAlpha: 设置Alpha值
tTextSize: 设置字体尺⼨。
tStyle: 设置画笔风格,空⼼或者实⼼。
tStrokeWidth: 设置空⼼的边框宽度。
getColor: 得到画笔的颜⾊
getAlpha: 得到画笔的Alpha值。
Paint类介绍
*
* Paint即文章美文 画笔,在绘图过程中起到了极其重要的作⽤,画笔主要保存了颜⾊,
* 样式等绘制信息,指定了如何绘制⽂本和图形,画笔对象有很多设置⽅法,
* ⼤体上可以分为两类,⼀类与图形绘制相关,⼀类与⽂本绘制相关。
*
* 1.图形绘制
* tARGB(int 校园励志歌曲 a,int r,int g,int b);
* 设置绘制的颜⾊,a代表透明度,r,g,b代表颜⾊值。
*
* tAlpha(int a);
* 设置绘制图形的透明度。
*
* tColor(int color);
* 设置绘制的颜⾊,使⽤颜⾊值来表⽰,该颜⾊值包括透明度和RGB颜⾊。
* tAntiAlias(boolean aa);
* 设置是否使⽤抗锯齿功能,会消耗较⼤资源,绘制图形速度会变慢。
*
* tDither(boolean dither);
* 设定是否使⽤图像抖动处理,会使绘制出来的图⽚颜⾊更加平滑和饱满,图像更加清晰
*
* tFilterBitmap(boolean filter);
* 如果该项设置为true,则图像在动画进⾏中会滤掉对Bitmap图像的优化操作,加快显⽰
* 速健康养生知识 度,本设置项依赖于dither和xfermode的设置
*
* tMaskFilter(MaskFilter maskfilter);
* 设置MaskFilter,可以⽤不同的MaskFilter实现滤镜的效果,如滤化,⽴体等*
* tColorFilter(ColorFilter colorfilter);
* 设置颜⾊过滤器,可苹果醋的正确喝法 以在绘制颜⾊时实现不⽤颜⾊的变换效果
*
* tPathEffect(PathEffect effect);
* 设置绘制路径的效果,如点画线等
*
* tShader(Shader shader);
* 设置图像效果,使⽤Shader可以绘制出各种渐变效果
*
* tShadowLayer(float radius ,float dx,float dy,int color);
* 在图形下⾯设置阴影层,产⽣阴影效果,radius为阴影的⾓度,dx和dy为阴影在x轴和y轴上的距离,color为阴影的颜⾊*
* tStyle(Paint.Style style);
* 设置画笔的样式,为FILL,FILL_OR_STROKE,或STROKE
*
* tStrokeCap(Paint.Cap cap);
* 当画笔样式为STROKE或FILL_OR_STROKE时,设置笔刷的图形样式,如圆形样式
* Cap.ROUND,或⽅形样式Cap.SQUARE
*
* tSrokeJoin(Paint.Join join);
* 设置绘制时各图形的结合⽅式,如平滑效果等
* tStrokeWidth(float width);
* 当画笔样式为STROKE或FILL_OR_STROKE时,设置笔刷的粗细度
*
* tXfermode(Xfermode xfermode);
* 设置图形重叠时的处理⽅式,如合并,取交集或并集,经常⽤来制作橡⽪的擦除效果*
* 2.⽂本绘制
* tFakeBoldText(boolean fakeBoldText);
* 模拟实现粗体⽂字,设置在⼩字体上效果会⾮常差
*
* tSubpixelText(boolean subpixelText);
* 设置该项为true,将有助于⽂本在LCD屏幕上的显⽰效果
*
* tTextAlign(Paint.Align align);
* 设置绘制⽂字的对齐⽅向
*
* tTextScaleX(float scaleX);
* 设置绘制⽂字x轴的缩什么玄幻小说好看 放⽐例,可以实现⽂字的拉伸的效果
*
* tTextSize(float textSize);
* 设置绘制⽂字的字号⼤⼩
*
* tTextSkewX(float skewX);
* 设置斜体⽂字,skewX为倾斜弧度
*
* tTypeface(Typeface typeface);
* 设置Typeface对象,即字体风格,包括粗体,斜体以及衬线体,⾮衬线体等
*
* tUnderlineText(boolean underlineText);
* 设置带有下划线的⽂字效果
*
* tStrikeThruText(boolean strikeThruText);
* 设置带有删除线的效果
测试代码如下:
ample.fsdfdfs;
t.Context;
aphics.Canvas;
aphics.Color;
aphics.Paint;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
public class GameView extends View {
public final static String TAG = "tag";
// 声明Paint对象
private Paint mPaint = null;
public GameView(Context context) {
super(context);
// 构建对象
mPaint = new Paint();
}
@Override
protected void onDraw(Canvas canvas) {  Draw(canvas);
// 设置Paint为⽆锯齿
mPaint.tAntiAlias(true);
// 设置Paint的颜⾊
mPaint.tColor(Color.RED);
mPaint.tColor(Color.BLUE);
mPaint.tColor(Color.YELLOW);
mPaint.tColor(Color.GREEN);
// 同样是设置颜⾊
mPaint.b(255, 0, 0));  // this is also t color
mPaint.tARGB(255, 255, 0, 0);
/
/ 提取颜⾊
<(0xcccccc);
// 设置paint的颜⾊和Alpha值(a,r,g,b)
mPaint.tAlpha(220);
// 这⾥可以设置为另外⼀个paint对象
// mPaint.t(new Paint());
// 设置字体的尺⼨
mPaint.tTextSize(14);

本文发布于:2023-05-03 20:48:31,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/521605.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:设置   绘制   效果
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图