在android中 有时候经常也会需要我们使用到 canvas 和 paint,(跟这经常结合起来 息息相关的就是 androd中的渲染器啦,这个前面稍微总结过了,这些东西虽然简单。但是真心感觉好实用),
上效果图,代码
注释也都很详细了呢。各种组合,可以达到很好的效果,例子后面举出吧。
private class MyTestView extends View{ public MyTestView(Context context) { super(context); // TODO Auto-generated constructor stub } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // TODO Auto-generated method stub int height = View.MeasureSpec.getSize(heightMeasureSpec); int width = View.MeasureSpec.getSize(widthMeasureSpec); setMeasuredDimension(width,height); super.onMeasure(widthMeasureSpec, heightMeasureSpec); } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); // 创建画笔 Paint p = new Paint(); // 设置红色 p.setColor(Color.BLUE); //text的显示位置 p.setTextAlign(Paint.Align.LEFT); //设置字体样式 p.setTypeface(Typeface.SANS_SERIF); //相当于setcolor 和 setAlpha //p.setARGB(0.5f, r, g, b); //X轴的比例因子 大于1时横向拉伸,小于1时横向收缩 p.setTextScaleX(2f); //设置下划线 p.setUnderlineText(true); //设置字体画笔 宽度 p.setStrokeWidth(20f); //设置字体大小 p.setTextSize(50); //设置倾斜因子 p.setTextSkewX(2); //画字 canvas.drawText("circle", 111, 111, p); // 画文本 //设置驱除画笔的锯齿效果 p.setAntiAlias(true); //画图 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); canvas.drawBitmap(bitmap,100,200,p); //画线 p.setColor(Color.GRAY); canvas.drawLine(150, 180, 230, 300, p); // canvas.drawLines(pts, paint); // 圆心 (x y) 半径 canvas.drawCircle(200, 200, 20, p); //画弧线 p.setStyle(Style.STROKE); p.setColor(Color.GREEN); RectF oval = new RectF(300,300,400,500); //区域。。 canvas.drawArc(oval, 180, 180, false, p); //画矩形 p.setStyle(Style.FILL_AND_STROKE); p.setColor(Color.CYAN); RectF oval1 = new RectF(300,300,400,500); canvas.drawRect(oval1,p); //画扇形 p.setColor(Color.YELLOW); //设置笔 p.setStyle(Style.STROKE); RectF oval2 = new RectF(100,400,400,550); //true画扇形 //(框) canvas.drawArc(oval2, 180, 180, true, p); //(实心) p.setStyle(Style.FILL); RectF oval3 = new RectF(100,480,370,620); canvas.drawArc(oval3, 180, 180, true, p); //多边形 实心就填充了 p.setStyle(Style.FILL); p.setColor(Color.BLACK); Path path = new Path(); //路径。。 path.moveTo(450,500); path.lineTo(510, 510); path.lineTo(550, 400); //使上面的点形成封闭图形 path.close(); canvas.drawPath(path, p); //画点 p.setColor(Color.LTGRAY); p.setStyle(Paint.Style.FILL); //画一个点 canvas.drawPoint(80, 570 , p); //画多个点 canvas.drawPoints(new float[]{110,570,140,570,170,570}, p); } }