android 图形图像
Canvas 画布 paint 画笔 Path 路径
Path代表任意多条直线连接而成的任意图形,当Canvas根据Path绘制时,它可以绘制出任意的形状
使用 Matrix 控制图像或组件变换步骤:
①获取 Matrix对象,该 Matrix对象既可创建,也可直接获取其他对象内封装的 Matrix;
②调用 Matrix的方法进行平移、旋转、缩放、倾斜等;
③将程序对 Matrix所做的变换应用到指定图像或组件。
colorMatrix : (4x5矩阵) 用于处理颜色
matrix (矩阵) : 处理图形(3x3)
Matrix matrix = new Matrix();
canvas.drawBitmap(bitmap, matrix, paint);
matrix.setTranslate(100, 1000);
canvas.drawBitmap(bitmap, matrix, paint);
matrix.preTranslate(100,100);
matrix.preRotate(20,100,100);
canvas.drawBitmap(bitmap, matrix, paint);
Android为Bitmap提供了内存回收方法:
void recycle():强制回收Bitmap对象。
用于判断Bitmap 对象是否被回收的方法:
boolean isRecycle();
BitmapFactory工具类:通过对资源文件的解析获取Bitmap对象
eg:decodeResource(Resource res,int id) decodeByteArray(byte[] data, int offset,int length) etc.
绘图应该继承View组件,并重写它的onDraw(Canvas canvas)方法
drawCircle:canvas.drawCircle(cx, cy, radius, paint);x、y代表坐标、radius是半径、paint是画笔,就是画图的颜色;
实心(paint.setStyle(Paint.Style.FILL)) 空心(paint.setStyle(Paint.Style.STROKE);
正方形 drawRect:canvas.drawRect(left, top, right, bottom, paint)
left:是矩形距离左边的X轴 top:是矩形距离上边的Y轴 right:是矩形距离右边的X轴 bottom:是矩形距离下边的Y轴
圆角矩形:drawRoundRect(RectF rect,float rx,float ry,Paint paint);
eg:RectF rectf=new RectF(40,20,80,40); canvas.drawRonudRect(rectf,6,6,paint);
左上角坐标(left,top)和右下角坐标(right,bottom)
RectF re = new Rect(left, top, right, bottom); 椭圆:canvas.drawOval(re,paint);
drawLine(float startX,float startY,float stopX,float stopY, paint);
绘制多条线:drawLine(float[] pts,Paint paint); eg:drawLine(new float[]{10,10,30,10,30,10,15,30,15,30,10,10},paint);
drawPoints(float x,float y,Paint paint)
drawText(String Text,float x,float y,Paint paint); 在画布的指定位置绘制文字
drawPosText(String text,float[] pos,Paint paint);使用该方法绘制字符串时,需要为每一个字符指定一个位置
text用于指定要绘制的文字,pos用于指定每一个字的位置,paint用于指定使用的画笔
设置画笔:
Paint paint=new Paint();//创建一个采用默认设置的画笔
paint.setAntiAlias(true);//使用抗锯齿的功能
paint.setColor(Color.RED);//设置颜色为红色
paint.setStrokeWidth(2);//笔触的宽度为2像素
paint.setStyle(Style.STROKE);//填充样式为描边(实心是Style.FILL)
使用SurfaceView实现动画 :
SurfaceView一般会与SurfaceHolder结合使用, SurfaceHolder用于向与之关联的SurfaceView上绘图,调用SurfaceView的getHolder()方法即可获取SurfaceView关联的 SurfaceHolder。 SurfaceHolder提供了如下方法来获取Canvas对象:
Canvas lockCanvas():锁定整个 SurfaceView对象,获取其上的Canvas。
Canvas lockCanvas(Rect dirty):锁定 SurfaceView上Rect划分的区域,获取其上的Canvas。
获取指定了SurfaceView上的Canvas之后,程序就可以调用Canvas绘图,绘图完成后通过如下方法来释放绘图,提交所绘制的图形:
unlockCanvasAndPost(canvas);
当调用SurfaceHolder的 unlockCanvasAndPost方法之后,该方法之前所绘制的图形还在缓冲中,下一次的lockCanvas()方法锁定的区域可能会“遮挡”它。
android 图形图像的更多相关文章
- Android图形基础
Android图形基础 Android在其android.graphics包中提供了完整的本机二维图像库. Color类,代表颜色,是用4个数字表示的,透明度.红色.绿色和蓝色(Alpha.Red.G ...
- android图形基础知识
Android核心分析(23)-----Andoird GDI之基本原理及其总体框架 2010-06-13 22:49 18223人阅读 评论(18) 收藏 举报 AndroidGDI基本框架 在An ...
- 超全面的.NET GDI+图形图像编程教程
本篇主题内容是.NET GDI+图形图像编程系列的教程,不要被这个滚动条吓到,为了查找方便,我没有分开写,上面加了目录了,而且很多都是源码和图片~ (*^_^*) 本人也为了学习深刻,另一方面也是为了 ...
- C#_GDI+详细教程(图形图像编程基础)
第7章 C#图形图像编程基础 本章主要介绍使用C#进行图形图像编程基础,其中包括GDI+绘图基础.C#图像处理基础以及简单的图像处理技术. 7.1 GDI+绘图基础 编写图形程序时需要使用GDI( ...
- 8 个优秀的 Linux 图形图像及色彩工具
8 个优秀的 Linux 图形图像及色彩工具 1. 硬件色彩分析器LPROF LPROF 是一个用于创建设备兼容,如相机.扫描仪.显示器的ICC兼容型材的颜色分析器.这些配置提供跨设备的色彩一致性.他 ...
- FastStone Capture(FSCapture) 注册码 _图形图像_软件教程_脚本之家
FastStone Capture(FSCapture) 注册码 _图形图像_软件教程_脚本之家 FastStone Capture 注册码 序列号: name/用户名:TEAM JiOO key/注 ...
- DSAPI 图形图像篇(上)
彩色文字对象 基于一些特殊需求,本人开发了彩色文字对象,该功能通过类似html代码的方式指示文本,并输出图像. 我们还是先来看一张图像. 这不是文本,是通过指定文本代码输出的图像.我们来看一下实现代码 ...
- DSAPI多功能组件编程应用-图形图像篇(中)
[DSAPI.DLL下载地址] 说到计算机上使用代码来处理各种图像特效,是一份太有挑战性的工作.以下涉及的所有图像效果均不是从网上复制的源码,而是本人试验数次并编写的,所以原理上会和网上的有所不同 ...
- Dreamweaver杀手!Illustrator终结者?Flash的末日?图形图像设计程序之网页版
Dreamweaver杀手!Illustrator终结者?Flash的末日?图形图像设计程序之网页版 阅读: 评论: 作者:Rybby 日期: 来源:rybby.com Adobe 家的 Il ...
随机推荐
- mysql链接服务器,update报错
select * from Openquery(MySQL, 'SELECT * FROM official.sys_hospital') 执行更新语句: ; 报错,错误信息: 链接服务器" ...
- OneHot编码
One-Hot编码 What.Why And When? 一句话概括:one hot编码是将类别变量转换为机器学习算法易于利用的一种形式的过程. 目录: 前言: 通过例子可能更容易理解这个概念. 假设 ...
- Cpython解释器下实现并发编程
一 背景知识 二 python并发编程之多进程 三 python并发编程之多线程 四 python并发编程之协程 五 python并发编程之IO模型 六 补充:paramiko模块 七 作业 一 背景 ...
- pyautogui 文档(三):键盘控制
typewrite()函数 主要的键盘功能是typewrite().此函数将键入字符串中传递的字符.要在按下每个字符键之间添加延迟间隔,请为interval关键字参数传递int float . > ...
- 【Spring学习】Spring的源码解析之路
缘起:=====>>>> 在项目中实际上是用到了Spring的内容,只是直接用的SpringBoot,不管是Eclipse中还是在Intellig IDEA中,应该都比较容易能 ...
- 部署NETCORE在LINUX上报Error -99 EADDRNOTAVAIL address not available
Unable to bind to http://localhost:80 on the IPv6 loopback interface: 'Error -99 EADDRNOTAVAIL addre ...
- WebForm应用log4net记录错误日志——使用线程列队写入
我的项目结构如下图: 日志帮助类库需要log4net包:工具—NuGet包管理器—管理解决方案NuGet程序包 线程日志帮助类 FlashLogger.cs 代码 using System; usin ...
- 对象属性拷贝工具类大全==>Bean的属性拷贝从此不用愁
大家在做java开发时,肯定会遇到api层参数对象传递给服务层,或者把service层的对象传递给dao层,他们之间又不是同一个类型对象,但字段又是一样,如果还是用普通的get.set方式来处理话,比 ...
- Kafka的安装及与Spring Boot的集成
安装JDK 下载jdk-8u202-ea-bin-b03-linux-x64-07_nov_2018.tar.gz 解压 配置 $ vi /etc/profile,在最后加入下面两行 export J ...
- 通过js获取外部css样式
通过js获取外部样式表中的属性,比如.box在style.css样式表中有个属性叫font-size:16px; 通过js获取.box的这个属性: js代码为: <script> wind ...