Android Canvas绘图

Android学习心得(一)——绘图

 

 

做java的都知道,绘图肯定首先需要一个Canvas,然后在用Graphics在上面绘制自己想要图案。不错,Android上面也类似,你可以从一个Bitmap得到它的Canvas,进行绘制,也可以自定义一个View,用它的Canvas。不同的时,Android里没有Graphics,而用Paint代之,当然用法也稍有不同。以下是自定义View的一段代码:
Java代码 复制代码
  1. @Override  
  2. public void onDraw(Canvas canvas) {   
  3.     // 首先定义一个paint   
  4.     Paint paint = new Paint();   
  5.        
  6.     // 绘制矩形区域-实心矩形   
  7.     // 设置颜色   
  8.     paint.setColor(Color.WHITE);   
  9.     // 设置样式-填充   
  10.     paint.setStyle(Style.FILL);   
  11.     // 绘制一个矩形   
  12.     canvas.drawRect(new Rect(00, getWidth(), getHeight()), paint);   
  13.        
  14.     // 绘空心矩形   
  15.     // 设置颜色   
  16.     paint.setColor(Color.RED);   
  17.     // 设置样式-空心矩形   
  18.     paint.setStyle(Style.STROKE);   
  19.     // 绘制一个矩形   
  20.     canvas.drawRect(new Rect(10105020), paint);   
  21.        
  22.     // 绘文字   
  23.     // 设置颜色   
  24.     paint.setColor(Color.GREEN);   
  25.     // 绘文字   
  26.     canvas.drawText(str, 3030, paint);   
  27.        
  28.     // 绘图   
  29.     // 从资源文件中生成位图   
  30.     Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);   
  31.     // 绘图   
  32.     canvas.drawBitmap(bitmap, 1010, paint);   
  33. }  
  1. @Override  
  2. public void onDraw(Canvas canvas) {  
  3.     // 首先定义一个paint   
  4.     Paint paint = new Paint();  
  5.       
  6.     // 绘制矩形区域-实心矩形   
  7.     // 设置颜色   
  8.     paint.setColor(Color.WHITE);  
  9.     // 设置样式-填充   
  10.     paint.setStyle(Style.FILL);  
  11.     // 绘制一个矩形   
  12.     canvas.drawRect(new Rect(00, getWidth(), getHeight()), paint);  
  13.       
  14.     // 绘空心矩形   
  15.     // 设置颜色   
  16.     paint.setColor(Color.RED);  
  17.     // 设置样式-空心矩形   
  18.     paint.setStyle(Style.STROKE);  
  19.     // 绘制一个矩形   
  20.     canvas.drawRect(new Rect(10105020), paint);  
  21.       
  22.     // 绘文字   
  23.     // 设置颜色   
  24.     paint.setColor(Color.GREEN);  
  25.     // 绘文字   
  26.     canvas.drawText(str, 3030, paint);  
  27.       
  28.     // 绘图   
  29.     // 从资源文件中生成位图   
  30.     Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);  
  31.     // 绘图   
  32.     canvas.drawBitmap(bitmap, 1010, paint);  
  33. }  
	@Override
	public void onDraw(Canvas canvas) {
		// 首先定义一个paint
		Paint paint = new Paint();
		
		// 绘制矩形区域-实心矩形
		// 设置颜色
		paint.setColor(Color.WHITE);
		// 设置样式-填充
		paint.setStyle(Style.FILL);
		// 绘制一个矩形
		canvas.drawRect(new Rect(0, 0, getWidth(), getHeight()), paint);
		
		// 绘空心矩形
		// 设置颜色
		paint.setColor(Color.RED);
		// 设置样式-空心矩形
		paint.setStyle(Style.STROKE);
		// 绘制一个矩形
		canvas.drawRect(new Rect(10, 10, 50, 20), paint);
		
		// 绘文字
		// 设置颜色
		paint.setColor(Color.GREEN);
		// 绘文字
		canvas.drawText(str, 30, 30, paint);
		
		// 绘图
		// 从资源文件中生成位图
		Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
		// 绘图
		canvas.drawBitmap(bitmap, 10, 10, paint);
	}


以上需要注意的有三点:
1、Android中的Rect和java中的可能稍有区别,前两个参数是左上角的座标,后两个参数是右下角的座标(不是宽度和高度);
2、Style.STROKE和Style.FILL外边的像素数是有区别的,这点和java里一样;
3、绘文字时,设置的座标点为(30,30),但绘出来后你会发现,文字的左上角座标要比你设置的偏上,不知道是android设置的bug,还是我们有理解到座标点的意义。

 

 

转自:http://blog.csdn.net/junpeng88/article/details/5540955

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章