2009年5月28日木曜日

Android - 2D graphics -

2D グラフィックスライブラリは android.graphics

Color クラス
Paint クラス
Canvas クラス
View クラス
Path クラス
etc..

More...

Color

アルファ、赤、緑、青 (ARGB) の4つの値で色を表現する。
アルファは透明度で、
アルファ = 0 : 透明
アルファ = 255 : 不透明

・色の指定方法
Colorクラスの静的定数
  1. int color = Color.BLUE;  // 青  
  2. int color = Color.argb(1272550255);   // 半透明の紫  


XML リソースファイルで定義
  1. <!--xml version="1.0" encoding="utf-8"?-->  
  2. <resources>  
  3.   <color name="color1">#7fff00ff</color>  
  4. </resources>  


・色の参照

XML ファイルで付けた名前で参照
  1. android:background="@color/color1";  


Java コードで取得
  1. int color = getResources().getColor(R.color.color1);  


getResources() : 現在の Activity に対応する ResourceManager クラスを返す
getColor() : Resource ID に対応する色を Manager に問い合わせる



Paint

グラフィックスの描画で必要なスタイル、色、その他の情報を管理

・描画色を設定
  1. Paint cPaint = new Paint();  
  2. cPaint.setColor(Color.LTGRAY);  // light gray  


Canvas

描画対象のキャンバスを表現

・キャンバスに描画する
View.onDraw() メソッドをオーバーライドする
  1. static public class GraphicsView extends View {  
  2.   public GraphicsView(Context context) {  
  3.     super(context);  
  4.   }  
  5.   @Override  
  6.   protected void onDraw(Canvas canvas) {  
  7.      // Drawing commands  
  8.   }  
  9. }  



Path

直線、曲線、矩形などのベクター描画コマンドを持つ

・円形パスを定義
  1. @Override  
  2. protected void onDraw(Canvas canvas) {  
  3.  Path circle = new Path();  
  4.  circle.addCircle(150150100, Path.Direction.CW);  
  5.  Paint cPaint = new Paint();  
  6.  Paint tPaint = new Paint();  
  7.  cPaint.setStyle(Paint.Style.STROKE);  
  8.  cPaint.setColor(Color.YELLOW);  
  9.  tPaint.setColor(Color.WHITE);  
  10.  canvas.drawPath(circle, cPaint);  
  11.    
  12.  final String ss = "Happy Birthday To You !!! Happy Birthday To You !!! Happy Birthday To You !!! Happy Birthday To You !!!";  
  13.  canvas.drawTextOnPath(ss, circle, 020, tPaint);    
  14. }  


Direction.CW : right hand



  1. // 色設定  
  2. paint.setColor(Color.argb(255,255,0,0));  
  3. // アンチエイリアス  
  4. paint.setAntiAlias(true);  
  5. // 塗りつぶし  
  6. paint.setStyle(Paint.Style.FILL);  
  7. // 塗りつぶしなし  
  8. paint.setStyle(Paint.Style.STROKE);  
  9. // 枠線の幅  
  10. paint.setStrokeWidth(2);  
  11. // 直線  
  12. canvas.drawLine(25,5,25,5+40,paint);  
  13. // パス  
  14. Path path = new Path();  
  15. path.moveTo(550,50);  
  16. path.lineTo(55+30,55);  
  17. path.lineTo(55+10,5+20);  
  18. path.lineTo(55+40,5+25);  
  19. path.lineTo(550,5+40);  
  20. canvas.drawPath(path, paint);  
  21. // 四角  
  22. canvas.drawRect(new Rect(004040), paint);  
  23. canvas.drawRect(004040, paint);  
  24. // 角丸四角  
  25. canvas.drawRoundRect(new RectF(004040), 1010, paint);  
  26. canvas.drawRoundRect(0040401010, paint);  
  27. // 円  
  28. canvas.drawCircle(100100150, paint);  


PathEffect クラスを使うと面白い効果が作れる

0 件のコメント:

コメントを投稿