【AndroidのCanvasに向き合おう】 点を描こう

このエントリーを Google ブックマーク に追加
Pocket
[`yahoo` not found]

Canvasに点を描こう

Canvasに点を描画するには、画面左上を原点としx,y座標で描画位置を指定し、Paintで半径や色、形を指定する必要があります。

点を描画する
void drawPoint(float x, float y, Paint paint) 指定した座標に点を中心を描画する。
  • float x:点を描画するx座標を左上を原点として指定する。
  • float y:点を描画するy座標を左上を原点として指定する。
  • Paint paint:半径や色、形を指定する。
void drawPoints(float[] pts, Paint paint) 指定した座標配列に点を描画する。
  • float[] pts:点を描画するx,y座標を左上を原点として指定する。
    配列は[x0,y0,x1,y1,x2,y2,…]のように偶数要素(0を含む)にx座標、奇数要素にy座標を指定する。
  • Paint paint:半径や色、形を指定する。
void drawPoints(float[] pts, int offset, int count, Paint paint) 指定した座標配列に点を描画する。
  • float[] pts:点を描画するx,y座標を左上を原点として指定する。
    配列は[x0,y0,x1,y1,x2,y2,…]のように偶数要素(0を含む)にx座標、奇数要素にy座標を指定する。
  • int offset:座標配列内の描画に使う開始要素を指定する。
    ptsの要素数を超える値や負数を指定するとエラーになります。
  • int count:座標配列内の描画に使う開始要素からの要素数を指定する。 offsetとの和がptsの要素数を超える値や負数を指定するとエラーになります。
  • Paint paint:半径や色、形を指定する。

使用例

点を描画するようなカスタムViewを作りました。

   public class MyCanvasPoints extends View{
      public MyCanvasPoints(Context context, AttributeSet attrs) {
         super(context, attrs);
      }
      
      @Override
      protected void onDraw(Canvas canvas) {
         Paint paint = new Paint();
         //直径を50に設定
         paint.setStrokeWidth(50);
         //形を正方形に設定
         paint.setStrokeCap(Paint.Cap.SQUARE);
         //色を赤色に設定
         paint.setColor(Color.RED);
         //x:100,y:100の位置に点を描画
         canvas.drawPoint(100,100, paint);
         //色を緑色に設定
         paint.setColor(Color.GREEN);
         //形を丸に設定
         paint.setStrokeCap(Paint.Cap.ROUND);

         /**
         * 3つの点を描画する
         * 点1[x:200,y:200]
         * 点2[x:200,y:300]
         * 点3[x:200,y:400]
         */
         canvas.drawPoints(new float[]{200f,200f,300f,200f,400f,200f},paint);
         /**
         * 座標配列を宣言
         * 要素番号0~7
         */
         float[] pts = new float[]{300f,300f,400f,400f,500f,500f,600f,600f};
         //色を青色に設定
         paint.setColor(Color.BLUE);
         /**
         * 座標配列のすべての値を使い点を描画する。
         * 4つの点を描画する
         * 点1[x:300,y:300]
         * 点2[x:400,y:400]
         * 点3[x:500,y:500]
         * 点4[x:600,y:600]
         */
         canvas.drawPoints(pts,0,pts.length,paint);
         //色を黒色に設定
         paint.setColor(Color.BLACK);
         /**
         * 座標配列の0番目の要素を使わず、1番目の値から7つの値を使い点を描画する。
         * 3つの点を描画する
         * 点1[x:300,y:400]
         * 点2[x:400,y:500]
         * 点3[x:500,y:600]
         * 点4[x:600,?](*値が不足し座標が作れないため描画されない)
         */
         canvas.drawPoints(pts,1,7,paint);
      }
   }

Androidゲームプログラミング A to Z

新品価格
¥4,968から
(2017/2/27 22:58時点)


AndroidエンジニアのためのモダンJava

新品価格
¥3,456から
(2017/2/27 23:01時点)


AndroidNDKネイティブプログラミング第2版

中古価格
¥1,893から
(2017/2/28 00:04時点)


Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

新品価格
¥3,024から
(2017/2/28 00:06時点)


Android Studio ではじめる Android プログラミング入門 第3版 Android Studio 2対応

新品価格
¥3,240から
(2017/2/28 00:11時点)


アプリを作ろう! Android入門 Android Studio版 Android5対応

新品価格
¥2,160から
(2017/2/28 00:31時点)


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)