Canvas、Paint绘图
来源:互联网 发布:注册淘宝跳过手机验证 编辑:程序博客网 时间:2024/06/10 12:57
最近看了一些绘图相关的知识,记录一下,方便查阅。绘图常用于自定义View的情况,可以根据需求绘制出相应的图案。
一、Canvas
Canvas持有(holds)所有的绘制操作,简单点说,canvas就是画布,所有的绘制都要在画布上进行。绘制操作需要四个基本的组件:1.一个执行所有绘制操作的画布canvas;2.一个持有所有像素的位图bitmap(可以理解为bitmap就是铺在canvas上的像素);3.一个绘制源数据(例如一个Rect,Path,Text或者是Bitmap);4.一个画笔Paint,描述绘制时的颜色,粗细等。
Canvas的常用方法
- drawRect(Rect rect, Paint paint)/drawRect(int left, int top, int right, int bottom, Paint paint)
绘制出一个指定的矩形,绘制的style由Paint指定。 - drawCircle(float cx, float cy, float radius, Paint paint)
绘制出一个指定的圆形,(cx, cy)为圆心坐标,radius是半径。 - drawText (String text, float x, float y, Paint paint)
绘制文字。x,y为绘制原点。注意此处的绘制原点是文字的左下角,与android布局常用的左上角不同。 - drawBimap
绘制bitmap若干种参数列表。常用的drawBitmap(Bitmap bitmap, float left, float top, Paint paint)
在指定位置上绘制一个bitmap。 - drawPath
绘制一条路径。关于Path和PathMeasure准备另开一篇单独来学,在此就先略过。 - clipRect
官方说明:Modify the current clip with the specified rectangle, which is expressed in local coordinates.
个人理解:通过clipRect设置一个矩形区域,绘制时只绘制此区域中的内容,其余部分不进行绘制。例如两个bitmap重叠时,可以通过这种方式,只绘制用户看得到的区域,提升绘制效率。
二、Paint
Paint包含了绘制几何图形,文字或者位图的样式和颜色等信息。直译为涂料,画笔。
构造方法
- public Paint()
默认构造函数 public Paint(int flag)
拥有特殊标记的一个paint
ANTI_ALIAS_FLAG ——————抗锯齿
FAKE_BOLD_TEXT_FLAG————加粗效果绘制文本
DITHER_FLAG————————–绘制位图时进行颜色抗抖动,简单来讲就是是颜色过度更加自然(自己没试过,网上查阅)public Paint(Paint paint)
根据一个已知画笔属性,创建出一个新的画笔。类似画笔的拷贝
常用方法
setStrokeCap(Paint.Cap cap)
设置笔头的形状
Paint.Cap.BUTT : 标准头
Paint.Cap.ROUND:多了一个圆头
Paint.Cap.SQUARE : 多了一个方头setStyle(Paint.Style style)
设置样式
Paint.Style.FILL:内部填充
Paint.Style.STROKE :描边
Paint.Style.FILL_AND_STROKE :内部填充并且描边
还是不清楚区别,看下面的图吧:setTextAlign(Paint.Align align)
设置文字的对齐方式
Paint.Align.CENTER:中间对齐
Paint.Align.LEFT:左对齐
Paint.Align.RIGHT:右对齐setStrokeWidth(float width)
当style为STROKE或者FILL_AND_STROKE时,用来设置画笔的粗细setTextSize(float size) 设置文字大小
- setTextScaleX(float scale) 设置文字X方向缩放比例,实现文字拉伸效果
- setTextSkewX(float skew) 设置文字倾斜效果。官方推荐±0.25,可以得到较好的倾斜效果
- setTypeface(Typeface typeface) 设置字体效果
- getTextBounds(String text, int start, int end, Rect bound)
根据文本边界获取一个矩形bound, 由此bound可以得到文本的宽高等信息 - setXfermode(Xfermode xfermode)
设置图像重叠时的显示效果
关于Xfermode的具体效果及用法,请阅读此篇文章。 - breakText(CharSequence text, int start, int end, boolean measureForwards, float maxWidth,float[] measuredWidth)
计算文本text指定宽度(maxWidth)内所包含的字符个数 - setPathEffect(PathEffect pathEffect)
设置路径效果,PathEffect有6个子类实现,分别是:
ComposePathEffect, CornerPathEffect, DashPathEffect, DiscretePathEffect, PathDashPathEffect, SumPathEffect 这6种效果后续研究
- Android绘图Canvas、Paint
- Canvas、Paint绘图
- Android Canvas,Paint 绘图
- android 用paint,canvas 绘图
- Android 高级绘图 Canvas, Paint , Bitmap
- Android:图形图像之使用Canvas,Paint绘图
- Android_2D绘图的学习Paint,Canvas(一)
- Android_2D绘图的学习Paint,Canvas(二)
- Android_2D绘图的学习Paint,Canvas(三)
- Android绘图-Paint、Canvas、Bitmap、BitmapFactory
- Android绘图Canvas、Paint类基本用法
- Android_2D绘图的学习Paint,Canvas(一)
- 【Android】【绘图】Canvas类,Paint类
- android_绘图的基础canvas,Paint
- Android绘图基础之: Canvas 和 Paint
- Android 2D绘图(Canvas+paint)详解
- Android 2D绘图解析 Canvas,Paint
- 自定义view—绘图基础Canvas+Paint
- 微信公众号开发_SHA1(十)
- 欢迎使用CSDN-markdown编辑器
- sqlserver中distinct的用法(不重复的记录)
- R语言实现文字时间堆叠图(主要用于文本挖掘)
- BZOJ 2957 楼房重建 (分块)
- Canvas、Paint绘图
- RTSP&IGMP详解
- svn分支与合并学习
- 微信公众号开发_WechatProcess(十一)
- android gridview设置item居中显示
- 算法时间复杂度与空间复杂度
- PHP经典实例读书笔记--日期和时间
- 淘宝 NPM 镜像 node删除node_modules WebStorm license server address
- mysql date range