前回は丸のみを書きましたが、
次にドロイド君を書いてみたいと思います。
大体で書いたので若干バランスがオリジナルと異なり
ますが、下記のようでできました。
色の設定に関しては、下記
#a4c639
にしたいのですが、setColorの中にはintの型で値を入れるので、
paint.setColor(0xffa4c639);
とします。(これで緑色になりました。)
頭の半円に関してdarwArcを使用します。
drawArcを利用する場合、最初にdrawArcの元の円が入る大きさの四角を用意します。
RectF rectf = new RectF(150,150,350,350);
このrectFを用いて下記のように設定をします。
canvas.drawArc(rectf, 180, 180, true, paint);
drawArc(四角,初めの角度,広がる角度,円の中心を含むか,paint)
この第4引数の値をfalseにすると中心を含まない形の弧になります。
trueの場合にはpizzaみたいな形になります。
四角を書く時ですが、四角の左上の座標を(x1,y1)右下の座標を(x2,y2)とすると、
canvas.drawRect(x1, y1, x2, y2, paint);
となります。
paint.setStyle()
を使うと次の設定が可能となります。
Paint.Style.FILL
塗りつぶす
Paint.Style.STROKE
線を引く
Paint.Style.FILL_AND_STROKE
線を引いて塗りつぶす。
どの場合にも設定した後のみ有効になります。
線を引く場合ですが最初に線の太さを決めます。
paint.setStrokeWidth(12);
線の角の形も決める事ができます。
paint.setStrokeCap(Paint.Cap.ROUND);
線の角の形は次から選ぶ事ができます。
Paint.Cap.BUTT
何もしない
Paint.Cap.ROUND
先を丸くします。
Paint.Cap.SQUARE
先を四角にします。
canvas.drawLine(220, 200, 170, 120, paint);
また、色の設定に関しては、
paint.setColor(0xffffffff);
の設定をすると、設定をするより上のプログラムと下のプログラムで色を変える事ができます。
以上で、簡単ではありますが下記の形で、ドロイド君を描画する事ができました。
(腕などには、丸に四角を重ねる形で作成をしております。)
DrawView.java
package in.andante.drawd; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.RectF; import android.view.View; public class DrawView extends View { public DrawView(Context context){ super(context); } protected void onDraw(Canvas canvas){ Paint paint = new Paint(); //色のセット paint.setColor(0xffa4c639); //アンチエイリアス paint.setAntiAlias(true); RectF rectf = new RectF(150,150,350,350); canvas.drawArc(rectf, 180, 180, true, paint); //body canvas.drawRect(150, 260, 350, 400, paint); canvas.drawRect(170, 400, 330, 420, paint); //bodyCirc canvas.drawCircle(170, 400, 20, paint); canvas.drawCircle(330, 400, 20, paint); //arm canvas.drawRect(100, 280, 140, 380, paint); canvas.drawRect(360, 280, 400, 380, paint); //armcirc canvas.drawCircle(120, 280, 20, paint); canvas.drawCircle(120, 380, 20, paint); canvas.drawCircle(380, 280, 20, paint); canvas.drawCircle(380, 380, 20, paint); //leg canvas.drawRect(180, 400, 230, 460, paint); canvas.drawRect(270, 400, 320, 460, paint); //legCirc canvas.drawCircle(205, 460, 25, paint); canvas.drawCircle(295, 460, 25, paint); //head paint.setStrokeWidth(12); paint.setStrokeCap(Paint.Cap.ROUND); canvas.drawLine(220, 200, 170, 120, paint); canvas.drawLine(280, 200, 320, 120, paint); //eye paint.setColor(0xffffffff); canvas.drawCircle(210, 200, 10, paint); canvas.drawCircle(290, 200, 10, paint); /* canvas.drawRect(150, 260, 350, 450, paint); canvas.drawRect(150, 260, 350, 450, paint); canvas.drawRect(150, 260, 350, 450, paint); canvas.drawRect(150, 260, 350, 450, paint);*/ } }
Drawd.java
package in.andante.drawd; import android.app.Activity; import android.os.Bundle; public class Drawd extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); DrawView view = new DrawView(this); setContentView(view); } }
上記で、ドロイド君が書けました。