zoukankan      html  css  js  c++  java
  • Android使用Canvas画图

    1.参考:http://blog.csdn.net/rhljiayou/article/details/7212620/

    2.常用方法:

      1.Canvas类

     drawArc 绘制弧

     drawBitmap 绘制位图

     drawCircle 绘制圆形

     drawLine 绘制线

     drawOval 绘制椭圆

     drawPath 绘制路径

     drawPoint 绘制一个点

     drawPoints 绘制多个点

     drawRect 绘制矩形

     drawRoundRect 绘制圆角矩形

     drawText 绘制字符串

     drawTextOnPath 沿着路径绘制字符串

      2.Paint类:

    setARGB/setColor 设置颜色

    setAlpha 设置透明度

    setAntiAlias 设置是否抗锯齿

    setShader 设置画笔的填充效果

    setShadowLayer 设置阴影

    setStyle 设置画笔风格

    setStrokeWidth 设置空心边框的宽度

    setTextSize 设置绘制文本时文字的大小

    setStrokeCap(Paint.Cap.ROUND) 设置为圆角

    3.代码如下:

    public class DrawView extends View {
      
        public DrawView(Context context) {
            super(context);  
        }
    
        public DrawView(Context context, @Nullable AttributeSet attrs) {
            super(context, attrs);
        }
    
        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);  
            /* 
             * 方法 说明 drawRect 绘制矩形 drawCircle 绘制圆形 drawOval 绘制椭圆 drawPath 绘制任意多边形 
             * drawLine 绘制直线 drawPoin 绘制点 
             */
    
    
            //设置画笔
            Paint paint=new Paint();
            paint.setAntiAlias(true);
            paint.setColor(Color.RED);
            paint.setStyle(Paint.Style.STROKE);
    
    
    
            //画文本
            canvas.drawText("画圆",20,30,paint);
            //画圆
            canvas.drawCircle(100,30,30,paint);
    
            //画线
            paint.setColor(Color.BLACK);
            canvas.drawText("画线及圆弧",10,80,paint);
            canvas.drawLine(10,90,310,90,paint);//直线
            canvas.drawLine(330,90,430,150,paint);//斜线
    
    
            //画圆弧及扇形
            RectF oval1=new RectF(10,160,110,260);
            paint.setColor(Color.GREEN);
    
            canvas.drawArc(oval1,180,180,false,paint);
            //第一个参数:范围  第二个参数:开始角度  第三个参数:圆弧度数
            //第四个参数:false---圆弧   true---扇形
            //第五个参数:画笔
    
            oval1.set( 120,160,220,260);
            canvas.drawArc(oval1,20,60,true,paint);
    
            oval1.set(230,160,330,260);
            canvas.drawArc(oval1,200,240,true,paint);
    
    
            //画矩形
            paint.setColor(Color.BLUE);
            canvas.drawRect(10,280,210,380,paint);
    
            //绘制圆角矩形
            RectF re1=new RectF(250,280,450,380);
            canvas.drawRoundRect(re1,15,15,paint);
    
    
            //画椭圆
            RectF re2=new RectF(10,400,210,500);
            canvas.drawOval(re2, paint);
    
            //画三角形
            paint.setColor(Color.DKGRAY);
            Path path=new Path();
            path.moveTo(70,520);
            path.lineTo(10,580);
            path.lineTo(130,580);
            path.close();
            canvas.drawPath(path,paint);
    
    
    
            //画点
            paint.setStyle(Paint.Style.FILL);
            canvas.drawPoint(10,600,paint);//一个点
            canvas.drawPoints(new float[]{20,600,30,600,40,600},paint);//多个点
    
    
            //画贝塞尔曲线
            paint.setStyle(Paint.Style.STROKE);
            paint.setColor(Color.RED);
            Path path1=new Path();
            path1.moveTo(100,620);
            path1.quadTo(150,550,170,700);
            canvas.drawPath(path1,paint);
    
    
    
            //画图片
            Bitmap bitmap= BitmapFactory.decodeResource(getResources(),R.drawable.pic6);
    //        canvas.drawBitmap(bitmap,100,610,paint);//不限定图片大小  只指定左上角坐标
            RectF rectF=new RectF(100,710,400,1010);
            canvas.drawBitmap(bitmap,null,rectF,paint);//限定图片显示范围
    
    
    
            //-----------------设置渐变后绘制------------------
    
            //Paint设置渐变器
            Shader mShader=new LinearGradient(0,0,40,60,
                    new int[]{Color.RED,Color.GREEN,Color.BLUE,Color.YELLOW},
                    null,Shader.TileMode.REPEAT);
            paint.setShader(mShader);
            paint.setStyle(Paint.Style.FILL);
            //设置阴影
            paint.setShadowLayer(45,10,10,Color.BLACK);
    
            canvas.drawRect(440,710,640,910,paint);
    
        }  
    }

    4.效果图:

  • 相关阅读:
    PHP 中的魔法常数
    Mac上tesseract-OCR的安装配置
    Java设计模式系列之迭代器模式
    Java设计模式系列之策略模式
    设计模式
    Java设计模式系列之单例模式
    SQl Server 中登录名 、用户、角色、概念一览
    数据结构知识点总结
    面试题收集——Java基础部分(一)
    XML学习总结(一)——XML介绍
  • 原文地址:https://www.cnblogs.com/wangjiaghe/p/7048842.html
Copyright © 2011-2022 走看看