Android 绘图学习

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

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样式:

MITER样式:

BEVEL样式:

其他暂不讲解

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

android绘图之Paint(1)相关推荐

  1. android paint 字体,Android绘图之Paint的使用方法详解

    前言 大家都知道在Android中,自定义控件是一个非常重要的知识点,而自定义控件对Android开发者是一个难点,考验开发人员对View原理的理解,对于继承View的自定义控件,一般都需要重写onD ...

  2. Android绘图之Canvas变换(6)

    Android 绘图学习 android绘图之Paint(1) android绘图之Canvas基础(2) Android绘图之Path(3) Android绘图之drawText绘制文本相关(4) ...

  3. Android绘图之LinearGradient线性渐变(9)

    Android 绘图学习 android绘图之Paint(1) android绘图之Canvas基础(2) Android绘图之Path(3) Android绘图之drawText绘制文本相关(4) ...

  4. android 绘图之Canvas,Paint类

    Canvas,Paint 1.在android 绘图但中经常要用到Canvas和Paint类,Canvas好比是一张画布,上面已经有你想绘制图画的轮廓了,而Paint就好比是画笔,就要给Canvas进 ...

  5. android canvas画图gc,自定义控件绘图(Canvas,Paint,Region等)篇一

    参考: 关于绘图相关的 Paint.Canvas多少都接触过一些,但没有系统的学习过,每次都是边查边用,这里都是参考大神的博客而成的学习记录,(采用Kotlin语言,来编写,kotlin确实有些坑,但 ...

  6. android 绘画,Android绘图基础

    绘图三要素 一支画笔 Paint. 一张画布 Canvas. 一个 Bitmap 或者一个 View 来承载这个图形. Paint常用属性 setAntiAlias() 设置画笔锯齿效果. setCo ...

  7. Android绘图机制与处理技巧-更新中

    概述 这里我们主要来探讨下 Android屏幕的相关只是 Android绘图技巧 Android图像处理技巧 SurfaceView的使用 绘图技巧中,医生讲的比较粗略,更多的细节参考了 Keegan ...

  8. android:绘图

    android:绘图 View:组件,理解为画布 Drawable:所有可见对象的描述,理解为:素材类 Bitmap:图片类 Canvas:画笔 Paint:画笔样式与颜色.特效的集合 近期很多网友对 ...

  9. android绘图拖影效果,Android自定义View绘图实现拖影动画

    前几天在"Android绘图之渐隐动画"一文中通过画线实现了渐隐动画,但里面有个问题,画笔较粗(大于1)时线段之间会有裂隙,我又改进了一下.这次效果好多了. 先看效果吧: 然后我们 ...

最新文章

  1. Android自定义控件之轮播图控件
  2. opencv4.5.0安装包_VB6.0软件安装包以及安装教程
  3. 【springboot】spring-boot-devtools 热部署 导致 mvn spring-boot:run 出现异常
  4. 断路器操作机构分合闸线圈电流特征曲线特点
  5. mysql表不存在_MySQL表不存在。但这确实(或者应该如此)
  6. 阿里云python服务器_Python服务器
  7. 地图距离算法_ORB-SLAM3 单目地图初始化(终结篇)
  8. 独家 | 滴滴的无人车野心
  9. zabbix详解(六)——zabbix 添加监控主机
  10. IDEA Maven Mybatis generator 自动生成代码
  11. python 直方图匹配_直方图匹配原理与python、matlab实现
  12. 【计算机网络】HTTP 协议详解
  13. 直播内容抢先看|基于 AUTOSAR 技术的 SOA 软件平台实践
  14. 使用c++语言做概率论 涉及求方差
  15. 79:企业CRM客户系统:登录模块开发(cookie和session以及登录态校验)
  16. 《PaddlePaddle从入门到炼丹》十一——自定义图像数据集识别
  17. 百练4083我爱北大 解析
  18. 创建数据库的相关命令与字符类型
  19. WuThreat身份安全云-TVD每日漏洞情报-2023-02-27
  20. WMI_04_常见的WMI类的属性

热门文章

  1. 数据密集型应用——分布式数据复制
  2. 和氟西汀类似的备注_氟西汀一样好听的网名有哪些
  3. [Jquery插件]输入框提示textbox-hinter
  4. 那些40岁的程序员都去哪了
  5. CSGO(KZ模式)服务器搭建教程(windows系统)包含申请全球服务器操作方法
  6. SQL SERVER Management Studio 打不开
  7. 一维条码与二维条码的码制区别
  8. Linux清理残留LVM分区
  9. Houdini低模解算转成高模关键帧动画并拆分碎块UV
  10. [Android]Couldn't load testcpp: findLibrary ret...