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

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