android绘图框架,android 图形绘制

  android绘图框架,android 图形绘制

  1.位图配置

  阿尔法_9:位图用作阿尔法掩码,只有8位分配给ALH通道。没有其他颜色。

  ARGB_4444:给每个颜色通道分配4位,包括Alpha通道。允许4096种不同的颜色和16个Alpha值。

  ARGB_8888:给每个颜色通道分配8位,包括Alpha通道。用256个Alpha值代表1670万种不同的颜色。

  RGB _ 565: 5位用于红色通道,6位用于绿色通道,5位用于蓝色通道(无Alpha通道)允许65,535种不同的颜色。这种设置几乎与ARGB_8888具有相同的高质量,但占用更少的内存空间。

  2.创建画布对象

  如果你想创建一个位图对象并绘制它,我们可以为它创建一个画布对象,例如

  bitmap bitmap=bitmap . create bitmap((int)getWindowManager()。getDefaultDisplay()。getWidth(),(int) getWindowManager()。getDefaultDisplay()。getHeight(),位图。配置ARGB _ 8888);

  Canvas canvas=新画布(位图);

  3.3的使用。绘制对象

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

  颜色。黑色彩色。蓝色彩色。红色

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

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

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

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

  (2)样式:用setStyle方法定义绘制对象样式时,需要知道是填充绘制的形状还是只画轮廓。可能的样式被定义为绘画的常数。风格类。

  画画。Style.STROKE:只画出形状的轮廓。

  画画。Style.FILL:仅填充形状。

  画画。填充并绘制形状的轮廓。

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

  绘制形状

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

  (2) Line:可以使用Canvas对象的drawLine方法。

  (3)矩形:可以使用Canvas独占的drawRect方法。但是,此方法有两种重载形式。第一种是最简单的直接输入矩形的leftx,topy,rightx,bottom,另一种是通过输入rectf(rectf类用浮点值分别表示leftx,topy,rightx,bottom,从而定义一个矩形)。

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

  canvas.drawRect(矩形,画图);

  (4)

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

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

  canvas.drawOval(ovalBounds,paint);

  (5)

  Circle:可以使用Canvas对象的drawCircle方法。

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

  油漆油漆=新油漆();

  Path p=new Path();

  p.moveTo(20,20);//如果不移动到,默认情况下,绘制从(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(字样。默认_粗体);

  (2)字体样式:除了内置的字体,Typeface类还定义了一系列的样式常量。这些样式可用于通过字样中的create方法修改内置字体。这个方法的返回值是一个新的字样对象。字体样式列表:

  字体。粗体字样。斜体字样。普通字样。粗体_斜体

  字样serif_italic=Typeface.create(字样。衬线,字体。斜体);

  paint . settypeface(serif _ italic);

  (3)外置字体:安卓应用只能使用内置字体。它支持从任何TrueType字体文件创建字样对象。TrueType字体是一种标准字体,可以在各种平台上使用。

  与Android内置字体完全不同的一种字体是Claude Pelletier创建的肖邦脚本字体。它面向公共领域,可以从各种来源免费下载,比如fontspace.com。

  要使用这种字体,您可以下载它并将。ttf文件复制到项目的资产文件夹中。Typeface.createFromAsset方法接受AssetManager对象和文件名作为参数,其中AssetManager对象可以通过从上下文调用getAssets来获得。该方法返回一个Typeface对象,该对象可以传递给paint.setTypeface方法。

  typeface chops=typeface . createfromsasset(getAssets(), Chopin script . TTF );

  paint.setTypeface(印章);

  (4)路径上的文本:使用的Canvas对象的drawTextOnPath方法。

android绘图框架,android 图形绘制