资源预览内容
第1页 / 共43页
第2页 / 共43页
第3页 / 共43页
第4页 / 共43页
第5页 / 共43页
第6页 / 共43页
第7页 / 共43页
第8页 / 共43页
第9页 / 共43页
第10页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
绘制2D图形,宋三华 2013.10.21,回顾与引入,小结与思考,Path类及其应用,Canvas类及其应用,Paint类及其应用,Color类及其应用,主要知识,Color类及其应用,Color类介绍 Color类主要定义了 一些常用的方法来转换整形的Color值 常用的常量如下:,其它色彩的定义 可以用十六进制的方法进行设置色彩,形式如:AARRGGBB,Color类及其应用,如何引用这些常量 引用时,使用Color.XXX,XXX代指常量名字,如Color.BLACK TextView tv=(TextView)findViewById(R.id.tv1); tv.setTextColor(Color.BLACK); 也可以自己定义,如android:TextColor=”#ff00ff00” android:background=“color/bgcolor”,构造方法 public Color() 实例化时,我们可以调用 常用方法 (1)public static int argb (int alpha, int red, int green, int blue),返回值是十六进制的值 int alpha, int red, int green, int blue的值均为十进制,取值范围(0-255),Color类及其应用,(2)public static int rgb (int red, int green, int blue),返回值是十六进制的值 int red, int green, int blue的值均为十进制,取值范围(0-255),Color类及其应用,例子,Color类及其应用,(1)新建项目 (2)在value文件夹下定义Color.xml文件,(3)编写Color值,(3)编写Color值,Color类及其应用,(4)在XML文件中引用,Color类及其应用,(5)在类中引用,TextView tv=(TextView)findViewById(R.id.textView1); tv.setTextColor(this.getResources().getColor(R.color.puzzle_light);,Color类及其应用,Paint类及其应用,简介 画笔是一个集合,这个集合里包含绘制的色彩、样式等重要信息。 在2D图形绘制时,画笔具有重要的角色,配合色彩及画布进行使用,Paint类及其应用,常用属性 int ANTI_ALIAS_FLAG 反锯齿 int HINTING_OFF 提示关闭 int HINTING_ON 提示开启 例子 Paint paint =new Paint(ANTI_ALIAS_FLAG),Paint类及其应用,常用方法 构造方法 public Paint () public Paint (int flags) 如果用第一种方法实例化画笔后,可以用setFlags(int)来设置flags,Paint类及其应用,其他方法 (1)setARGB(int a, int r, int g, int b) 设置Paint对象颜色 (2)setAlpha(int a) 设置alpha不透明度,范围为0255,Paint类及其应用,其他方法 (3)setColor(int color) 设置颜色,这里Android内部定义的有Color类包含了一些常见颜色定义 (4)setTextAlign(Paint.Align align) 设置文本对齐,Paint类及其应用,其他方法 (5)setTextSize(float textSize) 设置字体大小 (6)setTypeface(Typeface typeface) 设置字体,Typeface包含了字体的类型,粗细,还有倾斜、颜色等。,Paint类及其应用,其他方法 (7)setStyle (Paint.Style style) 设置画笔的样式,为FILL,FILL_OR_STROKE,或STROKE (8)setStrokeCap(Paint.Cap cap) 当画笔样式为STROKE或FILL_OR_STROKE时,设置笔刷的图形样式,如圆形样式Cap.ROUND,或方形样式Cap.SQUARE,Paint类及其应用,其他方法 (9)setStrokeWidth(float width); 当画笔样式为STROKE或FILL_OR_STROKE时,设置笔刷的粗细度 。 (10) setTextAlign (Paint.Align align),设置字体对齐方式,例子,Paint类及其应用,Override public void onDraw(Canvas canvas) Paint paint = new Paint(); paint.setColor(Color.BLUE); paint.setTextSize(100); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(5); canvas.drawLine(0, 0, 200, 200, paint); canvas.drawText(“apple“, 60, 60, paint); canvas.drawLine(0, 60, 500, 60, paint); super.onDraw(canvas); ,做一做,请同学自己仿照例子,画一个字体,要求:字体颜色为0xef00ff00,字体大小14f,字体内容及位置自定。,Paint类及其应用,Canvas类及其应用,简介 Canvas即画布,2D图形可以在其上绘制。 通过重载View.onDraw()方法,在指定的画布上绘图 常用属性 int ALL_SAVE_FLAG 重置画布时使用,常用方法 常用构造方法 public Canvas () public Canvas (Bitmap bitmap) 以bitmap对象创建一个画布,则将内容都绘制在bitmap上,Canvas类及其应用,常用方法 (1)drawARGB (int a, int r, int g, int b) 设置画布的颜色 a为alpha值(0-255) r(red值0-255) g(green值0-55) b(blue值0-255),Canvas类及其应用,常用方法 (2)drawArc (RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint) 画弧 Oval弧所在的圆(椭圆) startAngle弧开始的角度 sweepAngle结束角度 useCenter弧是否有中心 paint弧的颜色,Canvas类及其应用,例子,Canvas类及其应用,Paint paint=new Paint(); paint.setColor(Color.WHITE); paint.setAntiAlias(true); canvas.drawARGB(127, 255, 00, 00); RectF rect=new RectF(10,10,150,200); canvas.drawArc(rect, 30, -330, true, paint);,常用方法 (3)drawBitmap (Bitmap bitmap, float left, float top, Paint paint) 在指定点画出bitmap,Canvas类及其应用,常用方法 (4)drawBitmap (Bitmap bitmap, Rect src, Rect dst, Paint paint) 把bitmap截取src区域大小,然后布满dst区域,Canvas类及其应用,例子,RectF rect=new RectF(10,10,150,50); Resources res = getResources(); InputStream is = res.openRawResource(R.drawable.pic5); BitmapDrawable bmpDraw = new BitmapDrawable(is); Bitmap bmp = bmpDraw.getBitmap(); int x=bmp.getWidth(); int y=bmp.getHeight(); Rect bp=new Rect(x-80,x-80,x,y); canvas.drawBitmap(bmp, bp, rect, null);,常用方法 (5)drawCircle (float cx, float cy, float radius, Paint paint) 画园cx,cy为圆心,radius为半径,paint为画笔 (6)drawLine (float startX, float startY, float stopX, float stopY, Paint paint) 画线,从开始点(startX, startY,),到结束点(stopX, stopY),Canvas类及其应用,常用方法 (7)drawRect (float left, float top, float right, float bottom, Paint paint) 画矩形 (8)drawRoundRect (RectF rect, float rx, float ry, Paint paint) 圆角形矩形,float rx, float ry,圆角率,Canvas类及其应用,常用方法 (9)drawText (String text, float x, float y, Paint paint) 画布上写出字体 (10)drawTextOnPath (String text, Path path, float hOffset, float vOffset, Paint paint) 路径字,路径提前定义好。hOffset字符间距,vOffset字符与路径间距(可以正可以负),Canvas类及其应用,常用方法 (11)getWidth () 画布宽度 (12)getHeight () 画布高度 (13)rotate (float degrees) 旋转画布,Canvas类及其应用,常用方法 (14)rotate (float degrees, float px, float py) 以(px,py)为中心旋转画布 (15)scale (float sx, float sy) 缩放 (16)scale (float sx, float sy, float px, float py) 以(px,py)为中心,进行x轴,y轴缩放 (17)translate(float dx, float dy) 平移,Canvas类及其应用,例子,protected void onDraw(Canvas canvas) / TODO Auto-generated method stub Paint mPaint=new Paint(); Paint paint=new Paint(); mPaint.setColor(Color.CYAN); paint.setColor(getResources().getColor(R.color.mainline); for(int i=1;i10;i+) if(i%3=0) canvas.drawLine(0, i*height, 9*width, i*height, paint); canvas.drawLine(i*width, 0,i*width , 9*height, paint); else canvas.drawLine(0, i*height, 9*width, i*height, mPaint);
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号