グラフィックス(7)-Drawableによる描画


抽象クラスDrawableを継承したクラスを使って、図形を描画する事もでできます。

Drawableクラスを継承したクラスには様々なものがあり、正直なところ、把握しきれていません。

ここでは、とりあえず、ShapeDrawableとBitmapDrawableを用いた図形の描画について、述べる事にします。

 

Drawableオブジェクトを使うと、図形をオブジェクトとして、どの図形も同じように、アクセスする事ができます。

例えば、どの図形も同じようにsetBoundsメソッドを使って、大きさを自由に伸縮できます。

 

ShapeDrawableとBitmapDrawable

ShapeDrawableを使うと、Shapeクラスを継承したクラスの図形を描画する事ができます。

Shapeを継承したクラスには、以下のものがあります。

  • RectShape
    矩形図形を示す。
  • RoundRectShape
    角の丸い矩形図形を示す。
  • OvalShape
    楕円図形を示す。
  • ArcShape
    円弧図形を示す。
  • PathShape
    パスで示される図形を示す。

BitmapDrawableを使って、Bitmapを描画する事ができます。

以下のプログラムは、Draorableによる図形の描画のサンプルです。

Draorableによる描画のサンプル

setBoundsメソッドで、描画領域を指定します。

getPaintメソッドで、Paintオブジェクトを取得して、対象のDrawableオブジェクトに対する個々のPaintオブジェクトを、操作する事ができます。

drawメソッドで、DrawableオブジェクトをCanvasに描画します。

ShapeDrawableクラスのコンストラクタは、図形を示すShapeクラスを継承したクラスのオブジェクトを引数にとり、Shapeオブジェクトにより、描かれる図形の形状が異なります。

RoundRectShapeクラスのコンストラクタは、ちょっと複雑で、引数を3つとります。

実際に図形を描画してみたところ、この引数の意味は、以下の値を示しているようです。

第1引数は、float型の8個の要素からなる配列で、外側の角の丸い矩形図形のx軸とy軸の半径を、右上の頂点から時計周りに示しています。

第2引数はRectF型で、時計周りにそれぞれ、矩形の4つ辺の線の太さを示しています。

第3引数はfloat型の8個の要素からなる配列で、内側の角の丸い矩形図形のx軸とy軸の半径を、右上の頂点から時計周りに示しています。

ArcShapeのコンストラクタの引数は、円弧を描画する開始角度と終了角度を指定します。

PathShapeのコンストラクタの引数は、Path情報と標準の図形の幅と高さを示します。

BitmapDrawableクラスの、getIntrinsicWidthメソッドとgetIntrinsicWidthメソッドは、コンストラクタで指定されたBitmap画像の、幅と高さを返します。

 

このプログラムを実行すると、以下のような画面が表示されます。

 

 

参考URL

 

ページのトップへ戻る