ホーム >  Android > Canvasクラス

Android -Canvasクラス-

Canvasクラス

Canvasクラスは、文字、図形等を描画することができます。

Canvasクラスのコンストラクタ


  • Canvas()
  • Canvas(Bitmap bitmap)

Canvasクラスの主なメソッド


テキストの描画
void drawText(String text, float x, float y, Paint paint) 座標(x,y)の位置を基点に文字列textを描画します。
void drawText(String text, int start, int end, float x, float y, Paint paint) 座標(x,y)の位置を基点に文字列textのstart+1文字目からend+1文字目までのテキストの描画します。
void drawPosText(String text, float[] pos, Paint paint) float型配列 posで指定された位置に沿って文字列textを描画します。
void drawPosText(char[] text, int index, int count, float[] pos, Paint paint) float型配列 posで指定された位置に沿ってchar型配列textのindex要素位置から文字数count分のテキストの描画します。
点の描画
void drawPoint(float x, float y, Paint paint) x軸とy軸の座標を指定して、点を描画します 。
void drawPoints(float[] pts, Paint paint) x軸とy軸の座標を配列に指定して、点を描画します。
{x1,y1,x2,y2,x3,y3,・・・・・}
void drawPoints(float[] pts, int offset, int count, Paint paint) 描画対象となる配列の開始位置(offset)の要素からcount数(xy座標がセットの為、描画したい数の2倍で指定)までの 点を描画します。
線の描画
void drawLine(float startX, float startY, float stopX, float stopY, Paint paint) 始点のx座標(startX),始点のy座標(startY)の座標位置より、終点のx座標(stopX),終点のy座標(stopY)の座標まで、線を描画します。
void drawLines(float[] pts, Paint paint) x軸とy軸の座標のペアの配列で指定された、線を描画します。
void drawLines(float[] pts, int offset, int count, Paint paint) x軸とy軸の座標のペアの配列と、描画対象となる配列のオフセット位置と、オフセット位置からの数を指定して、線を描画します。
パスの描画
void drawPath(Path path, Paint paint) Pathクラスは、複数の頂点座標(XY座標)を保持するパス情報のクラスです。 複数の描画処理をPathオブジェクトに追加して、まとめて描画する事ができます。
PathクラスのmoveTo()メソッドとlineTo()メソッド
  • void movtTo (float x,float y)
    パスの開始位置(x,y座標)を指定します。
  • void lineTo(float x,float y)
    ラインの追加
矩形(四角形)の描画
void drawRect(float left, float top, float right, float bottom, Paint paint) 矩形の左上のX座標(left),左上のY座標(top),右下のX座標(right),右下のY座標(bottom)を指定して、矩形の描画をします。
void drawRect(Rect r, Paint paint) Rectクラスで指定された矩形情報に、矩形の描画をします。
Rectクラスは、左上のXY座標と右下のXY座標を保持する矩形情報クラスです。
Rectクラスのコンストラクタ
Rect(int left,int top,int right,int bottom)
矩形の左上のX座標(left),左上のY座標(top),右下のX座標(right),右下のY座標(bottom)を指定
void drawRect(RectF rect, Paint paint) RectFクラスで指定された矩形情報に、矩形の描画をします。
Rectクラスは、左上のXY座標と右下のXY座標を保持するfloat型の矩形情報クラスです。
RectFクラスのコンストラクタ
RectF(float left, float top, float right, float bottom)
矩形の左上のX座標(left),左上のY座標(top),右下のX座標(right),右下のY座標(bottom)を指定
角丸矩形の描画
void drawRoundRect(RectF rect, float rx, float ry, Paint paint) RectFで指定された矩形情報に、角の丸い矩形を描画します。 rxは、コーナーのX半径、ryは、コーナーY半径です。
円の描画
void drawCircle(float cx, float cy, float radius, Paint paint) 中心点のXY座標(cx, cy)を中心として、半径(radius)の円を、描画します。
楕円の描画
void drawOval(RectF oval, Paint paint) RectFクラスで指定された矩形情報に、楕円を描画します。
円弧の描画
void drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint) RectFクラスで指定された矩形情報に、角度(startAngle)を起点に時計回りで、角度(sweepAngle)の円弧を描きます。 useCenterをtrueに指定すると、楕円の中心を含めて描画します。 開始角度(startAngle)が0で時計針の短針が3時の位置に、180で9時の位置が開始位置になります。 角度(sweepAngle)の値に負の値を指定すると、反時計回りでの角度になります。
画像領域の塗り潰し
void drawColor(int color) Color値で、描画領域を塗りつぶします。
void drawPaint(Paint paint) Paintに設定された色で、描画領域を塗りつぶします。
void drawRGB(int r, int g, int b) RGBを指定して、描画領域を塗りつぶします。
void drawARGB(int a, int r, int g, int b) RGBとアルファ値を指定して、描画領域を塗りつぶします。
イメージの描画
void drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint) ビットマップオブジェクト(bitmap)とXY座標(イメージの左上の座標)、描画オブジェクト(paint)を指定します。
描画オブジェクトはnullでも構いません。
void drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint) イメージの拡大縮小描画を行うことができます。
描画元に領域は、画像全体、又は画像の一部を指定します。
ビットマップオブジェクト(bitmap)、描画元領域の矩形(src)、描画先の矩形(dst)、描画オブジェクト(paint)を 指定します。

Canvasクラスの使用例


テキスト描画の使用例

protected void onDraw(Canvas canvas) {
    float[] pos={50,60,70,70,90,90,110,80,130,60};
    float[] pos2={50,160,70,140,90,160,110,140,180,110};
    Paint paint =new Paint();
    paint.setAntiAlias(true);
    paint.setStrokeWidth(10);

    //drawText(String text, float x, float y, Paint paint)メソッド利用
    paint.setColor(Color.BLUE);
    canvas.drawText("あああああ", 10, 10, paint);

    //drawText(String text, int start, int end, float x, float y, Paint paint)メソッド利用
    paint.setColor(Color.GREEN);
    canvas.drawText("かきくけこ", 1, 3, 30, 30, paint);

    //drawPosText(String text, float[] pos, Paint paint) メソッド利用
    paint.setColor(Color.RED);
    canvas.drawPosText("さしすせそ", pos, paint);

    //drawPosText(char[] text, int index, int count, float[] pos, Paint paint) メソッド利用
    paint.setColor(Color.GRAY);
    canvas.drawPosText(new char[]{'た','ち','つ','て','と'}, 1,4,pos2, paint);

}

実行結果


点描画の使用例

protected void onDraw(Canvas canvas) {
  float[] pts={20,20,40,40,60,60,80,50};
  Paint paint =new Paint();
  paint.setAntiAlias(true);

  //drawPoint(float x, float y, Paint paint)メソッド利用
  paint.setColor(Color.BLUE);
  paint.setStrokeWidth(10);
  canvas.drawPoint(10,10,paint);

  //drawPoints(float[] pts, Paint paint)メソッド利用
  paint.setColor(Color.GREEN);
  paint.setStrokeWidth(10);
  canvas.drawPoints(pts,paint);

  //drawPoints(float[] pts, Paint paint)メソッド利用
  paint.setColor(Color.RED);
  paint.setStrokeWidth(12);
  canvas.drawPoints(pts,1,4,paint);
}

実行結果

リファレンス
     Canvasクラス