Andriod绘图的基础知识
2013-03-27 14:01
225 查看
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对象,例如
3.Paint对象的使用
(1)颜色:可以通过Paint对象上的setColor方法,并传入一个Color对象。Color类定义了一系列颜色,以32位整数常量表示:
Color.BLACK\Color.BLUE\Color.RED
还可以通过Color.argb静态方法构造一个特定的颜色,形如:
(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,以此来定一个矩形)。
(4)椭圆:与使用RectF对象绘制矩形的方式相同,此时RectF对象定义椭圆的边界,即在矩形的内部绘制椭圆。
(5)圆:可以使用Canvas对象的drawCircle方法
(6)路径:路径是一系列可用来创建任意形状的直线。为了绘制一个路径,首先必须构造一个Path对象。Path对象可以调用任意次数,通过使用moveTo告诉它无须绘制而直接移动到某个点,或者使用lineTo绘制一条直线到某个点,等等方法。
我们可以通过Canvas对象的drawText方法来绘制文本,同时可以配合Paint类的setTextSize来设置文本大小。
(1)内置字体:Paint类提供了setTypeface方法并传入一个Typeface对象来指定应该使用哪种字体。
Typeface类定义了许多常量来表示Android系统中附带的字体,例如:Typeface.MONOSPACE\Typeface.SANS_SERIF\Typeface.SERIF\Typeface.DEFAULT\Typeface.DEFAULT_BOLD。
(2)字体样式:与内置字体一起,Typeface类还定义了一系列的样式常量。通过Typeface中的create方法可以将这些样式应用于修改某个内置字体。这个方法的返回值是一个新的Typeface对象。Typeface中的样式列表:
Typeface.BOLD\Typeface.ITALIC\Typeface.NORMAL\Typeface.BOLD_ITALIC
Typeface serif_italic=Typeface.create(Typeface.SERIF,Typeface.ITALIC);
paint.setTypeface(serif_italic);
(3)外部字体:Android应用程序不限定只能使用内置字体。其支持从任何TrueType字体文件创建Typeface对象。TrueType字体是一种标准字体,并且可以在各种平台上使用。
一个与Android内置字体完全不同的字体是由Claude Pelletier创建的Chopin Script字体。它面向公共领域,可以通过各种来源免费下载,如fontspace.com等等。
为了使用该字体,可以下载它并将.ttf文件放入到项目中的asset文件夹中。Typeface.createFromAsset方法接受一个AssetManager对象以及文件的名称作为参数,其中AssetManager对象可以通过从Context调用getAssets获得。该方法返回一个Typeface对象,可以将它传递给paint.setTypeface方法。
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.绘制文本
我们可以通过Canvas对象的drawText方法来绘制文本,同时可以配合Paint类的setTextSize来设置文本大小。
(1)内置字体:Paint类提供了setTypeface方法并传入一个Typeface对象来指定应该使用哪种字体。
Typeface类定义了许多常量来表示Android系统中附带的字体,例如:Typeface.MONOSPACE\Typeface.SANS_SERIF\Typeface.SERIF\Typeface.DEFAULT\Typeface.DEFAULT_BOLD。
paint.setTypeface(Typeface.DEFAULT_BOLD);
(2)字体样式:与内置字体一起,Typeface类还定义了一系列的样式常量。通过Typeface中的create方法可以将这些样式应用于修改某个内置字体。这个方法的返回值是一个新的Typeface对象。Typeface中的样式列表:
Typeface.BOLD\Typeface.ITALIC\Typeface.NORMAL\Typeface.BOLD_ITALIC
Typeface serif_italic=Typeface.create(Typeface.SERIF,Typeface.ITALIC);
paint.setTypeface(serif_italic);
(3)外部字体:Android应用程序不限定只能使用内置字体。其支持从任何TrueType字体文件创建Typeface对象。TrueType字体是一种标准字体,并且可以在各种平台上使用。
一个与Android内置字体完全不同的字体是由Claude Pelletier创建的Chopin Script字体。它面向公共领域,可以通过各种来源免费下载,如fontspace.com等等。
为了使用该字体,可以下载它并将.ttf文件放入到项目中的asset文件夹中。Typeface.createFromAsset方法接受一个AssetManager对象以及文件的名称作为参数,其中AssetManager对象可以通过从Context调用getAssets获得。该方法返回一个Typeface对象,可以将它传递给paint.setTypeface方法。
Typeface chops=Typeface.createFromAsset(getAssets(),"ChopinScript.ttf"); paint.setTypeface(chops);(4)路径上的文本:使用的Canvas对象的drawTextOnPath方法
相关文章推荐
- Andriod绘图的基础知识
- Andriod绘图的基础知识
- CPaintDC、CClientDC、CWindowDC和CMetaFileDC类的主要特点及区别-Windows绘图基础知识
- 绘图(一,基础知识)
- CPaintDC、CClientDC、CWindowDC和CMetaFileDC类的主要特点及区别-Windows绘图基础知识
- Android中Canvas绘图知识的基础学习
- android中的2D绘图基础知识
- 摄像头基础知识1_Andriod
- ios 学习之你画我话绘图五 构造路径基础知识
- Windows GDI绘图基础知识
- windows绘图基础知识
- win32绘图1_绘图基础知识
- GDI+基础知识二 绘图表面
- Android基础知识(9)—Android绘图基础Canvas、Paint
- Python 数据分析(一) 本实验将学习 pandas 基础,数据加载、存储与文件格式,数据规整化,绘图和可视化的知识
- Python 数据分析(一) 本实验将学习 pandas 基础,数据加载、存储与文件格式,数据规整化,绘图和可视化的知识
- qt绘图相关的基础知识
- 绘图(五,Android图像变换基础知识矩阵Matrix)
- 应用程序基础,andriod框架主题知识
- [WebGL入门]三,3D绘图的基础知识