码迷,mamicode.com
首页 > 移动开发 > 详细

android游戏开发中图形绘制:Canvas和Paint的使用

时间:2015-02-27 17:01:20      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:android游戏   canvas   paint   

android游戏开发中,使用android.graphics中的类来绘制2D向量图和文字。


一 画布Canvas
在Android中的绘图应该继承View组件,并重写它的onDraw(Canvas canvas)方法。
Canvas代表指定View上的画布,常用方法如图:
技术分享

二 画刷Paint
Paint代表Canvas上的画刷,主要用于绘制风格,包括画刷颜色、画刷笔触粗细、填充风格等。
大体上可以分为两类,一类与图形绘制相关,一类与文本绘制相关。
常用方法如图:
技术分享



三 路径Path
Path表示在Canvas上绘制的路径,可以是任意多条直线连接而成的任意图形。


四 示例
protected void onDraw(Canvas canvas) {  
	super.onDraw(canvas);  
	// 把整张画布绘制成白色  
    canvas.drawColor(Color.WHITE);


    // 创建一个画刷
    Paint paint = new Paint(); 


    // 设置画刷属性
    paint.setAntiAlias(true);			// 去锯齿
    paint.setColor(Color.RED);			// 设置画刷颜色为红色
    paint.setStyle(Paint.Style.STROKE);	// 设置画刷样式为空心
    paint.setStrokeWidth(3);			// 设置paint的外框宽度


    // 画一个空心圆形
    canvas.drawCircle(40, 40, 30, paint);


    // 画一个空心正方形
    canvas.drawRect(10, 90, 70, 150, paint);
    // 画一个空心长方形
	canvas.drawRect(10, 170, 70,200, paint);
    
    // 画一个空心椭圆形
    RectF re=new RectF(10,220,70,250);
    canvas.drawOval(re, paint);


    // 画一个空心三角形
    Path path=new Path();
	path.moveTo(10, 330);
	path.lineTo(70,330);
	path.lineTo(40,270);
	path.close();
	canvas.drawPath(path, paint);


	// 画一个空心梯形
	Path path1=new Path();
	path1.moveTo(10, 410);
	path1.lineTo(70,410);
	path1.lineTo(55,350);
	path1.lineTo(25, 350);
	path1.close();
	canvas.drawPath(path1, paint);
    
    // 修改画刷属性      
	paint.setStyle(Paint.Style.FILL);	// 设置画刷样式为实心
	paint.setColor(Color.BLUE);			// 设置画刷颜色


	// 画一个实心圆
	canvas.drawCircle(120,40,30, paint);


	// 画一个实心正方形
	canvas.drawRect(90, 90, 150, 150, paint);
	
	// 画一个实心长方形
	canvas.drawRect(90, 170, 150,200, paint);
	
	// 画一个实心椭圆
	RectF re2=new RectF(90,220,150,250);
	canvas.drawOval(re2, paint);
	
	// 画一个实心三角形
	Path path2=new Path();
	path2.moveTo(90, 330);
	path2.lineTo(150,330);
	path2.lineTo(120,270);
	path2.close();
	canvas.drawPath(path2, paint);


	// 画一个实心梯形
	Path path3=new Path();
	path3.moveTo(90, 410);
	path3.lineTo(150,410);
	path3.lineTo(135,350);
	path3.lineTo(105, 350);
	path3.close();
	canvas.drawPath(path3, paint);
	
	// 设置渐变色
	Shader mShader=new LinearGradient(0,0,100,100,
	      new int[]{Color.RED,Color.GREEN,Color.BLUE,Color.YELLOW},
	      null,Shader.TileMode.REPEAT);
	paint.setShader(mShader);


	// 画一个渐变色圆
	canvas.drawCircle(200,40,30, paint);
	
	// 画一个渐变色正方形
	canvas.drawRect(170, 90, 230, 150, paint);
	
	// 画一个渐变色长方形
	canvas.drawRect(170, 170, 230,200, paint);
	
	// 画一个渐变色椭圆
	RectF re3=new RectF(170,220,230,250);
	canvas.drawOval(re3, paint);
	
	// 画一个渐变色三角形
	Path path4=new Path();
	path4.moveTo(170,330);
	path4.lineTo(230,330);
	path4.lineTo(200,270);
	path4.close();
	canvas.drawPath(path4, paint);
	
	// 画一个渐变色梯形
	Path path5=new Path();
	path5.moveTo(170, 410);
	path5.lineTo(230,410);
	path5.lineTo(215,350);
	path5.lineTo(185, 350);
	path5.close();
	canvas.drawPath(path5, paint);


	// 绘制文字
	paint.setTextSize(24);	// 设置字号
	canvas.drawText(getResources().getString(R.string.str_text1), 240, 50, paint);
	canvas.drawText(getResources().getString(R.string.str_text2), 240, 120, paint);
	canvas.drawText(getResources().getString(R.string.str_text3), 240, 190, paint);
	canvas.drawText(getResources().getString(R.string.str_text4), 240, 250, paint);
	canvas.drawText(getResources().getString(R.string.str_text5), 240, 320, paint);
	canvas.drawText(getResources().getString(R.string.str_text6), 240, 390, paint);  
}


四 效果图

技术分享


参考文章:
http://www.cnblogs.com/stulife/archive/2010/08/19/1803313.html
http://www.cnblogs.com/-oyk/archive/2011/10/25/2223624.html
http://blog.csdn.net/u010142437/article/details/9200465

android游戏开发中图形绘制:Canvas和Paint的使用

标签:android游戏   canvas   paint   

原文地址:http://blog.csdn.net/xufeng0991/article/details/43969699

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!