文字与图像的绘制
来源:互联网 发布:中国税务网络大学门 编辑:程序博客网 时间:2024/04/28 00:00
Bitmap代表一张位图,BitmapDrawable里封装的图片就是一个Bitmap对象。
把一个Bitmap封装成BitmapDrawable对象:BitmapDrawable drawable = new BitmapDrawable(bitmap)
把一个BitmapDrawable对象里取出Bitmap:getBitmap();
对Bitmap图像的变化
CreateBitmap(),CraeteScaledBitmap()
根据不同数据源创建Bitmap
decodeByteArray(),decodeFile(),decodeFileDescriptor,decodeResource(),decodeStream();
Bitmap的回收
isRecycled(),该Bitmap对象是否已被回收。recycle(),强制一个Bitmap对象回收自己。
Android绘图
一、基础篇 Canvas
安卓Android的绘图应该继承View组件,并重写它的onDraw(Canvas canvas)方法。重写onDraw方法涉及到一个绘图API:Canvas,代表依附于指定View的画布。
Canvas状态(属性)有如下:
1)layer 图层(绘制图层、shade图层) 2)filters 过滤器 3)save/restore stack 绘制状态栈 4)Matrix变换 5)clip stack 裁剪栈
Canvas的方法如下:
1)绘制相关
绘制点 drawPoint / drawPoints
绘制弧线 drawArc()绘制直线/绘制多条线 drawLine() / drawLines()
绘制矩形 drawRect() 绘制圆角矩形 drawRoundRect()
绘制椭圆 drawOval() 绘制圆 drawCicle()
按路径绘制任意形状 drawPath()
绘制文字 drawText() 按路径绘制文字 drawTextOnPath() drawTextRun()
按给定的位置绘制文字drawPosText
绘制位图 drawBitmap() 保存绘制前和绘制后的画布状态的绘制图片 drawPicture(Picture picture)
向画布填充颜色 drawARGB() drawRGB() drawColor()
其他绘制: drawVertices()
2)裁剪相关
剪切矩形 clipRect() 剪切指定区域 clipRegion(Region region) 按Path裁剪 clipPath()
3)get 获取
getClipBounds(); 获取画布的密度 getDesity() , getDrawFilter() , 获取画布的高和宽 getHeight() getWidth(), getMatrix(),
获取在该画布上能画出的位图的最大高和宽getMaximumBitmapHeight() ,getMaximumBitmapWidth()
获取保存画布状态的次数 getSaveCount() ,
4)判断相关
判断该绘制是否有硬件加速 isHardwareAccelerated()
判断当前绘制的图层是否不透明 isOpaque(),
5)Matrix操作
判断某特定区域(方法参数一表示的)经过Matrix变换后是否完全移出了当前裁剪区域 quickReject()
保存当前Matrix变换和裁剪变换到一个栈中 save() ,save(int saveFlags),
保存该画布内外Matrix变换和裁剪变换状态到栈中, saveLayer();
移除所有对Matrix变换和裁剪变换的修改的状态 restore(),该方法与save()方法配套使用。restoreToCount()
Matrix变换的旋转 rotate(),Matrix变换的大小变化 scale() ,Matrix变换之平移 translate() ,Matrix变换之倾斜 skew()
6)set 设置
setMatrix(),setDensity() , setBitmap(), setDrawFilter(),
二、基础篇 Paint
1、Paint涉及到的方法:
get 获取
获取透明度 getAlpha ,获取画笔颜色 getColor() , 返回画笔的Flag值getFlags(),
返回字体特征值 getFontFeatureSettings() ,
返回推荐的行间距对象 getFontMetrics(), 返回推荐的行间距数值 getFontMetricsInt(),返回行空间值 getFontSpacing()
返回画笔 hinting mode getHinting(),返回字母间距 getLetterSpacing(),getMaskFilter(),
返回某个字符最靠近水平方向的序号 getOffsetForAdvance(), 获取画笔PathEffect对象getPathEffect()
返回光标位置 getRunAdvance() ,
getShader(), getStrokeCap(),getStrokeJoin(), getStyle(),getTypeface(), getXfermode()
返回文字对其方式对Paint.Align象 getTextAlign(),
获取笔冠 getStrokeMiter(),getSrokeWidth(), getTextBounds(),getTextLocale() ,getTextPath(), getTextScaleX()
getTextSize(),getTextSkewX(),getTextWidths(), getTextWidths(),
判断
getColorFilter() ,
Flag相关: hasGlyph(),isElegantTextHeight() , isFakeBoldText(), isFilterBitmap(),isLineText(), isStrikeThruText()
isSubppixelText(), isUnderLineText(),
set 设置类
画笔恢复初始状态reset(), set(Paint paint), setARGB(),setAlpha(), setColor(), setColorFilter(),
Flag相关:setDither(boolean dither),setElegantTextHeight(),setFilterBitmap(),setFlags(),
setFontFeatureSetting(),setHinting(),setLetterSpacing(),setLinearText(),setMaskFilter(),,setShader(),
设置渐变效果setShadowLayer(),设置路径显示效果setPathEffect(),
setStrokeCap(),setStrokeJoin(),setStrokeMiter(),setStrokeWidth(),setStyle(),setSubpixelText(),setTextAlign(),
setTextLocale(),setTextSize(),setTypeface(),,setXfermode()
设置文字删除线setStrikeThruText(),设置文字倾斜setTextSkewX(),设置文字下划线setUnderlineText(),设置文字粗体显示setFakeBoldText(),文字水平拉伸setTextScaleX(),
其他
返回当前字样和字号下距离文字基准线的上方距离 ascent()
返回当前字样和字号下距离文字基准线的上方距离 descent()
返回在画布范围内的字体大小的值 breakText() 清除clearShadowLayer(),获取文字宽度measureText
三 、Path
一次完整的路径叫做contour
基础用法:
moveTo(float x,float y),设置contour的起始位置(x,y),lineTo(float x,float y),从结尾处开始,到(x,y)坐标连成线
close(),关闭当前contour。
内部类:
1)Path.Direction 枚举类型
有两种值:Path.Direction.CCW(counter-clockwise) 逆时针方向,Path.Direction.CW顺时针方向
2)Path.FillType 枚举类型:EVEN_ODD,INVERSE_EVEN_ODD,WINDING,INVERSE_WINDING,
3)Path.Op 枚举类型 DIFFERENCE , INTERSECT, REVERSE_DIFFERENCE, UNION, XOR
该枚举值用来表示后添加的路径与原有的路径的组合方式类型。
涉及到的方法:
1>addXXX类型,向原有的Path里添加一个新的Path,这两个Path组合生成新的Path,这种组合的具体逻辑通过Path.Op来设置。
2>判断类 isConvex() isEmpty() isInverseFileType() isRect()
3>set设置类
op(), set() ,setFillType(),setLastPoint(),setLastPoint(),
4>其他
transform(),toggleInverseFillType(),
2、Paint的内部类
1) Paint.Style 枚举类,共有三个值:STROKE ,FILL,FILL_AND_STROKE
2) Paint.Align
3) Paint.Cap
4) Paint.FontMetrics
5) Paint.Join
- 文字与图像的绘制
- 【python图像处理】几何图形的绘制与文字的绘制(ImageDraw类详解)
- 绘制文字和图像
- 图像与文字的合成
- 图像与文字的合成
- 图像与文字的合成
- PHP中创建图像并绘制文字的例子
- 绘制形状与文字
- 文字与图像和声音的区别
- Visual C++ 图像与文字的合成
- 绘制字符串与图像
- 图像处理与绘制
- canvas绘制图像或者文字时模糊
- Canvas---文字的绘制
- 文字的绘制
- 文字与图片图像
- svg文字与图像
- OpenCV--绘制形状与文字
- HTML5 2D 游戏开发(三): 设置舞台
- android AsyncTask介绍
- 实验室纳新
- [js note]part1-mouseover和mousemove的区别
- excel之固定表中某些内容不被修改
- 文字与图像的绘制
- reformatvob命令描述
- 3Sum, 3Sum Closest, 4 Sum
- SQL Server使用
- Java程序设计基础(三):方法
- linux常用命令(42):ping 命令
- (转载)Ubuntu下备份系统的方法
- 学习计算器的源代码
- 实现杨辉三角的思路及代码