Android 绘图学习

Paint 讲解开篇

android Paint,Canvas

android中绘制特定图案类似显示中的绘画需要画笔和画纸,为此android提供了Paint和Canvas。
Paint和Canvas分别代表画笔和画布。
The Paint class holds the style and color information about how to draw geometries, text and bitmaps.
Paint类似画笔,保存着绘制文本,图形,图片的样式和颜色信息。(颜色,宽度,粗细,透明度,字体样式,字体大小)。

The Canvas class holds the "draw" calls. To draw something, you need
4 basic components: A Bitmap to hold the pixels, a Canvas to host
the draw calls (writing into the bitmap), a drawing primitive (e.g. Rect,
Path, text, Bitmap), and a paint (to describe the colors and styles for the
drawing).
Canvas类似画布,用于绘制。

提供了三种初始化方法:
Paint(),
Paint(int flags),
Paint(Paint paint)。

第二种构造函数传入了flag,相当于无参构造之后调用了setFlags(int),有很多种flag,这里举个例子UNDERLINE_TEXT_FLAG(其他的flag见developers文档),绘制文字时会有下划线,多个flag或可以达到设置多个flag的目的。

Ps:设置的很多属性都可以通过flag实现,但没有set函数形象。(例如ANTI_ALIAS_FLAG抗锯齿,一般初始化时直接把抗锯齿的flag填入)

Paint常用设置

Paint常用的设置函数:
setAlpha()透明度
setAntiAlias()抗锯齿
setColor(),setARGB()设置颜色
setStyle(Paint.Style style) 设置填充样式
setStrokeCap(Paint.Cap cap) 画笔的样式(落笔,收笔时)
setStrokeJoin(Paint.Join join)连接点的样式
setStrokeWidth(float width)设置画笔宽度
setShadowLayer(float radius, float dx, float dy, int shadowColor) 设置阴影
setTextSize(float textSize) 字体大小
setTextAlign(Paint.Align.RIGHT)设置字体对齐方式

后期讲解:
setColorFilter(ColorFilter filter) 设置颜色过滤
setUnderlineText(true) 下划线
setPathEffect() 设置路径效果
setTypeface() 设置字体风格
setFilterBitmap() 设置图片过滤
setXfermode(Xfermode xfermode) xfermode设置图像混合模式
setShader(Shader shader) 设置shader包括渐变shader,图片shader
。。。。。。。。

基本属性使用

setAlpha 透明度

setAlpha(int a) 设置透明度,a 值得范围 [0..255],仅仅改变setColor()的颜色的透明度,不改变颜色值,0是完全透明,255完全不透明。
注意:需要先调用setColor(),再调用setAlpha才会生效,否则将会被覆盖,因为setColor中包含了alpha。

setStyle 填充样式

setStyle设置填充样式,所谓填充的样式指只绘制线或者绘制同时填充:
Paint.Style.FILL 填充内部,会把闭合区域填充颜色
Paint.Style.FILL_AND_STROKE 填充内部和描边
Paint.Style.STROKE 仅描边,仅仅绘制边界
默认FILL 填充内部,

STROKE样式

FILL_AND_STROKE样式和FILL 类似但当画笔宽度很宽时会产生不同

颜色,字体,对齐,抗锯齿

setColor,setARGB设置颜色,设置画笔的颜色,setARGB()参数范围0-255。
setAntiAlias(boolean) 抗锯齿,使边界更顺滑(有些屏幕分辨率不高,导致像素点比较大,绘制边界可能会有颗粒感,打开抗锯齿边界颗粒感会减少)。

setTextSize(float textSize) 字体大小,单位是px,如果是dp要注意转换。
setTextAlign(Paint.Align.RIGHT)设置字体对齐方式,根据下面的实例可以,对齐方式基于开始绘制的点。
一起讲解:

mPaint.setTextSize(50);
mPaint.setTextAlign(Paint.Align.LEFT);
canvas.drawText("android Paint 学习 LEFT",300,300,mPaint);
mPaint.setTextAlign(Paint.Align.CENTER);
canvas.drawText("android Paint 学习 CENTER",300,400,mPaint);
mPaint.setTextAlign(Paint.Align.RIGHT);
canvas.drawText("android Paint 学习 RIGHT",300,500,mPaint);


setTextAlign对齐是相对于开始绘制的坐标点。

setShadowLayer 阴影

setShadowLayer(float radius, float dx, float dy, int shadowColor) 设置阴影


mPaint.setShadowLayer(10,-20,30,Color.GRAY);
canvas.drawText("android Paint 学习 CENTER",getWidth()/2,450,mPaint);

setShadowLayer(float radius, float dx, float dy, int shadowColor)
Radius设置角度,dx,dy控制字体的上下左右出现,有正负之分,dx的正负代表右左,dy的正负代表下上。

setStrokeCap

setStrokeCap(Paint.Cap.ROUND)
设置绘制起始点和结尾点的样式,
三种样式ROUND,BUTT,SQUARE
Cap.ROUND(圆形)、Cap.SQUARE(方形)、Paint.Cap.BUTT(无)
ROUND:

BUTT和SQUARE差别不大:

setStrokeJoin

setStrokeJoin(Paint.Join join),设置绘制path连接点的样式
mPaint.setStrokeJoin(Paint.Join.ROUND);
// mPaint.setStrokeJoin(Paint.Join.MITER);
// mPaint.setStrokeJoin(Paint.Join.BEVEL);

Join.MITER(结合处为锐角)、
Join.Round(结合处为圆弧)、
Join.BEVEL(结合处为直线)

ROUND样式:

image

MITER样式:

image

BEVEL样式:

其他暂不讲解

setXfermode(Xfermode xfermode) xfermode设置图像混合模式
setShader(Shader shader) 设置shader包括渐变shader,图片shader
还有很多其他属性会后续讲解。

android绘图之Paint(1)
android绘图之Canvas基础(2)
Android绘图之Path(3)
Android绘图之drawText绘制文本相关(4)
Android绘图之Canvas概念理解(5)
Android绘图之Canvas变换(6)
Android绘图之Canvas状态保存和恢复(7)
Android绘图之PathEffect (8)
Android绘图之LinearGradient线性渐变(9)
Android绘图之SweepGradient(10)
Android绘图之RadialGradient 放射渐变(11)
Android绘制之BitmapShader(12)
Android绘图之ComposeShader,PorterDuff.mode及Xfermode(13)
Android绘图之drawText,getTextBounds,measureText,FontMetrics,基线(14)
Android绘图之贝塞尔曲线简介(15)
Android绘图之PathMeasure(16)
Android 动态修改渐变 GradientDrawable

更多相关文章

  1. 在RelativeLayout布局中可以设置标签的android:layout_toLeftO..
  2. android Button组件的属性和方法
  3. Android的OpenGL学习笔记(5)
  4. Android之实现textvew跑马灯效果
  5. Android(安卓)关于获取摄像头帧数据
  6. android学习轨迹之二:Android权限标签uses-permission的书写位置
  7. Android(安卓)自定义view画圆
  8. 华为手机Android(安卓)Studio开发不显示Logcat解决办法
  9. Android(安卓)Studio 修改 Logcat 颜色

随机推荐

  1. 认识xml的作用
  2. xml实现多渠道接入网站的构架的方法
  3. xml图像超链接的制作代码
  4. 详解xml型字符串解析时存在& < >符号时的
  5. 具体分析Pull方式解析XML的示例代码
  6. Microsoft.XMLHTTP对象介绍
  7. maven项目不编译xml文件的解决办法
  8. Jaxb2实现Bean与xml互转的示例代码详解
  9. java对象转换为xml格式的示例代码分享
  10. 如何打开xml文件介绍