android绘图

来源:互联网 发布:杭州软件开发培训 编辑:程序博客网 时间:2024/05/18 00:35
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;


public class MyView extends View{


public MyView(Context context, AttributeSet attrs) {
super(context, attrs);

}
//重写该方法,进行绘图
@SuppressLint("DrawAllocation") @Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//把整张画布绘制成白色
canvas.drawColor(Color.WHITE);
//创建画笔
Paint paint=new Paint();
//去锯齿
paint.setAntiAlias(true);
paint.setColor(Color.BLUE);
//设置画笔的风格:缕空
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(4);
//获取组件的宽度
int viewWidth=this.getWidth();
//绘制圆形 X轴坐标Y轴坐标 半径 画笔
canvas.drawCircle(viewWidth/10+10, viewWidth/10+10, viewWidth/10, paint);
//绘制正方形 左边距 上边距 右边距 下边距
//宽: x = 右边距-左边距 viewWidth/5   高:y=下边距-上边距viewWidth/5
canvas.drawRect(10, viewWidth/5+20, viewWidth/5+10, viewWidth*2/5+20, paint);
//绘制矩形
canvas.drawRect(10, viewWidth*2/5+30, viewWidth/5+10, viewWidth/2+30, paint);
//绘制圆角矩形
RectF re1=new RectF(10, viewWidth/2+40, viewWidth/5+10, viewWidth*3/5+40);
//rect:RectF对象 rx:x方向上的圆角半径 ry:y方向上的圆角半径
canvas.drawRoundRect(re1, 15, 15, paint);
//绘制椭圆
RectF re2=new RectF(10, viewWidth*3/5+50, 10+viewWidth/5, viewWidth*7/10+50);
canvas.drawOval(re2, paint);
//定义一个Path对象,封装成一个三角形
Path path1=new Path();
//设置开始位置
path1.moveTo(10, viewWidth*9/10+60);
//绘制直线
path1.lineTo(viewWidth/5+10, viewWidth*9/10+60);
path1.lineTo(viewWidth/10+10, viewWidth*7/10+60);
//回到初始点形成封闭的曲线
path1.close();
canvas.drawPath(path1, paint);
//定义一个path对象,封装成一个五角形
Path path2=new Path();
//设置开始位置
path2.moveTo(10+viewWidth/15, 70+viewWidth*9/10);
path2.lineTo(10+viewWidth*2/15, 70+viewWidth*9/10);
path2.lineTo(10+viewWidth/5, 70+viewWidth);
path2.lineTo(10+viewWidth/10, viewWidth*11/10+70);

path2.lineTo(10, viewWidth+70);
path2.close();
canvas.drawPath(path2, paint);
//设置填充风格后绘制
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.RED);
//绘制圆形
canvas.drawCircle(viewWidth*3/10+20, viewWidth/10+10, viewWidth/10, paint);
//绘制正方形
canvas.drawRect(viewWidth/5+20, viewWidth/5+20, viewWidth*2/5+20, viewWidth*2/5+20, paint);
//绘制矩形
canvas.drawRect(viewWidth/5+20, viewWidth*2/5+30, viewWidth*2/5+20, viewWidth/2+30, paint);
//绘制圆角矩形
RectF rec21=new RectF(viewWidth/5+20, viewWidth/2+40,20+ viewWidth*2/5, viewWidth*3/5+40);
canvas.drawRoundRect(rec21, 15, 15, paint);
//绘制椭圆
RectF rec22=new RectF(20+viewWidth/5, 50+viewWidth*3/5, 20+viewWidth*2/5, viewWidth*7/10+50);
canvas.drawOval(rec22, paint);
//定义一个Path对象,封闭成三角形
Path path3=new Path();
path3.moveTo(20+viewWidth/5, viewWidth*9/10+60);
path3.lineTo(viewWidth*2/5+20, viewWidth*9/10+60);
path3.lineTo(viewWidth*3/10+20, viewWidth*7/10+60);
path3.close();
canvas.drawPath(path3, paint);
//设置字体大小后绘制
paint.setTextSize(48);
paint.setShader(null);
//绘制7个字符串
canvas.drawText("圆形", 60+viewWidth*3/5, viewWidth/10+10, paint);

}


}

0 0