package com.proto.design;
import android.view.View;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Paint.Align;
public class DesignView extends View {
// コンストラクタ
public DesignView(Context context) {
super(context);
// 背景色の指定 (android.graphics.Colorの定義)
setBackgroundColor(Color.WHITE);
}
// 描画
@Override
protected void onDraw(Canvas canvas) {
// 描画オブジェクトの生成
Paint paint=new Paint();
paint.setAntiAlias(true); // 文字の縁を滑らかに描く
paint.setColor(Color.parseColor("blue")); // 色指定
paint.setTextSize(22); // 文字サイズ
paint.setTextAlign(Align.CENTER); // 文字位置
canvas.drawText("グラフィックの描画",getWidth()/2,22,paint);
// ラインの描画
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(1);
paint.setColor(Color.parseColor("yellow"));
canvas.drawLine(0,26,getWidth(),26,paint); // 水平線
paint.setStrokeWidth(2);
paint.setColor(Color.parseColor("red"));
canvas.drawLine(0,30,getWidth()/2-10,30,paint); // 水平線
paint.setStrokeWidth(3);
paint.setColor(Color.parseColor("green"));
canvas.drawLine(getWidth()/2-10,30,getWidth()/2-10,30+40,paint); // 垂直線
paint.setStrokeWidth(5);
paint.setColor(Color.parseColor("magenta"));
canvas.drawLine(getWidth()/2,30,getWidth()/2-10,30+40,paint); // 斜線
paint.setStrokeWidth(7);
paint.setColor(Color.parseColor("blue"));
canvas.drawLine(getWidth()/2,30,getWidth()/2+20,30+40,paint); // 斜線
// パス描画のガイド線
paint.setStrokeWidth(1);
paint.setColor(Color.parseColor("gray"));
for(int i=0; i<20; i++){
canvas.drawLine(40,80+i*10,getWidth()-30,80+i*10,paint);
canvas.drawLine(40+i*10,80,40+i*10,270,paint);
}
// パスの描画
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(2);
paint.setColor(Color.argb(255,255,0,0));
Path path=new Path();
path.moveTo(50,80);
path.lineTo(70,100);
path.lineTo(40,120);
path.lineTo(110,130);
path.lineTo(90,150);
canvas.drawPath(path,paint);
// オフセット描画
path.offset(100,0);
canvas.drawPath(path,paint);
path.reset(); // 位置情報のリセット
// キュービックの描画
path.moveTo(60,180);
path.cubicTo(30,260, 120,280, 80,200);
canvas.drawPath(path,paint);
path.reset(); // 位置情報のリセット
// カドリールの描画
path.moveTo(160,180);
path.quadTo(170,220, 280,260);
canvas.drawPath(path,paint);
// 四角形の描画
paint.setStrokeWidth(2);
paint.setColor(Color.argb(255,0,0,255));
paint.setStyle(Paint.Style.STROKE); // 塗り潰しなし
canvas.drawRect(new Rect(20,300,20+30,300+40),paint);
paint.setStyle(Paint.Style.FILL); // 塗り潰し
canvas.drawRect(new Rect(60,300,60+30,300+40),paint);
// 角丸矩形の描画
paint.setStrokeWidth(2);
paint.setColor(Color.argb(255,255,0,255));
paint.setStyle(Paint.Style.STROKE); // 塗り潰しなし
canvas.drawRoundRect(new RectF(110,300,110+40,300+40),10,10,paint);
paint.setStyle(Paint.Style.FILL); // 塗り潰し
canvas.drawRoundRect(new RectF(160,300,160+40,300+40),10,10,paint);
// 円の描画
paint.setStrokeWidth(2);
paint.setColor(Color.argb(255,0,255,0));
paint.setStyle(Paint.Style.STROKE); // 塗り潰しなし
canvas.drawCircle(240,320,20,paint);
paint.setStyle(Paint.Style.FILL); // 塗り潰し
canvas.drawCircle(290,320,20,paint);
}
}
|