Andriod绘图的基础知识

  次阅读 作者:智能小宝 来源:互联网 2016-01-19 11:05 我要评论(0)

画图都是对供给应用程序的一块内存进行数据填充,也就是对这块surface内存进行操作,说穿了就是我们要么调用2D的API画图,要么调用3D的 API画图,然后将画下来的图保存在这个内存中,最后这个内存里面的内容会被Opengl渲染以后变为可以在屏幕上的像素信息。

1.位图的配置

ALPHA_9:用于作为Alpha蒙版的位图,只为Alph通道分配8位。没有其他颜色。

ARGB_4444:为每个颜色通道分配4位,包括Alpha通道。允许表示拥有16个Alpha值的4096种不同颜色。

ARGB_8888:为每个颜色通道分配8位,包括Alpha通道。允许表示拥有256个Alpha值的1670万种不同的颜色。

RGB_565:5位用于红色通道,6位用于绿色通道,以及5位用于蓝色通道(没有Alpha通道)允许有65535种不同的颜色。这个设置几乎与 ARGB_8888具有相同的高质量,但占用更少的内存空间。

2.创建Canvas对象

如果想创建一幅位图对象,并对其进行绘制,那么我们可以对它创建Canvas对象,例如

Bitmap bitmap = Bitmap.createBitmap((int) getWindowManager()

.getDefaultDisplay().getWidth(), (int) getWindowManager()

.getDefaultDisplay().getHeight(), Bitmap.Config.ARGB_8888);

Canvas canvas = new Canvas(bitmap);

3.Paint对象的使用

(1)颜色:可以通过Paint对象上的setColor方法,并传入一个Color对象。 Color类定义了一系列颜色,以32位整数常量表示:

Color.BLACK\Color.BLUE\Color.RED

还可以通过Color.argb静态方法构造一个特定的颜色,形如:

int mycolor=Color.argb(255,128,64,32)

实际上,还可以直接使用Paint对象的方法setARGB来指定颜色:

paint.setARGB(255,128,64,32);

(2)样式:当通过setStyle方法定义Paint对象样式时,需要明确是否填充绘制的形状 或者仅仅是描画轮廓。可能的样式定义为Paint.Style类的常量。

Paint.Style.STROKE:仅绘制形状的轮廓

Paint.Style.FILL:仅填充形状

Paint.Style.FILL_AND_STROKE:填充并绘制形状的轮廓

(3)笔画的宽度:可以使用Paint对象上的setStrokeWidth方法指定。

4.绘制形状

(1)点:可以使用Canvas对象的drawPoint方法

(2)直线:可以使用Canvas对象的drawLine方法

(3)矩形:可以使用Canvas独享的drawRect方法,不过该方法有两种重载形式,第一 种是最简单的直接传入矩形的 leftx,topy,rightx,bottomy,另一种是通过传入RectF(RectF类使用浮点值分别表示 leftx,topy,rightx,bottomy,以此来定一个矩形)。

RectF rectangle=new RectF(leftx,topy,rightx,bottomy);

canvas.drawRect(rectangle,paint);

(4)椭圆:与使用RectF对象绘制矩形的方式相同,此时RectF对象定义椭圆的边界,即在 矩形的内部绘制椭圆。

RectF ovalBounds=new RectF(leftx,topy,rightx,bottomy);

canvas.drawOval(ovalBounds,paint);

(5)圆:可以使用Canvas对象的drawCircle方法

(6)路径:路径是一系列可用来创建任意形状的直线。为了绘制一个路径,首先必须构造一个 Path对象。Path对象可以调用任意次数,通过使用moveTo告诉它无须绘制而直接移动到某个点,或者使用lineTo绘制一条直线到某个点,等等 方法。

Paint paint=new Paint();

Path p=new Path();

p.moveTo(20,20);//如果不moveTo,则默认在(0,0)处开始绘制

p.lineTo(100,200);

p.lineTo(200,100);

canvas.drawPath(p,paint);

5.绘制文本

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...