android 中的 canvas , paint

来源:互联网 发布:数据库介绍ppt 编辑:程序博客网 时间:2024/06/05 03:02

在android中 有时候经常也会需要我们使用到 canvas 和 paint,(跟这经常结合起来 息息相关的就是 androd中的渲染器啦,这个前面稍微总结过了,这些东西虽然简单。但是真心感觉好实用),

上效果图,代码



注释也都很详细了呢。各种组合,可以达到很好的效果,例子后面举出吧。 

private class MyTestView extends View{public MyTestView(Context context) {super(context);// TODO Auto-generated constructor stub}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {// TODO Auto-generated method stubint height = View.MeasureSpec.getSize(heightMeasureSpec); int width = View.MeasureSpec.getSize(widthMeasureSpec); setMeasuredDimension(width,height); super.onMeasure(widthMeasureSpec, heightMeasureSpec);}@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stubsuper.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);            } }




原创粉丝点击