zoukankan      html  css  js  c++  java
  • android学习日记07--Canvas画布

    1、Canvas
      Canvas类主要实现了屏幕的绘制过程,其中包含了很多实用的方法,比如绘制一条路径、区域、贴图、画点、画线、渲染文本,
    当然Android官网提示大家很多方法有不同的重载版本,参数更灵活。

      2D部分是android SDK内部自己提供,3D部分是用Open GL ES(3D部分先直接pass,除非你要做些3D游戏之类的)。大部分2D使用的api都在android.graphics和android.graphics.drawable包中。

    API参考地址http://android.toolib.net/reference/android/graphics/Canvas.html

    下面是Canvas类常用的简单方法

    // 设置画布颜色为蓝色
    canvas.drawColor(Color.BLUE);

    //canvas.drawPoint(x, y, paint); x、y表示绘制点的坐标
    //canvas.drawPoints(pts, paint);pts表示绘制点存储的数组,两两值表示一个坐标点
    //canvas.drawPoints(pts, offset, count, paint);offset表示跳过哪些点,count表示实际绘制的个数
    float[] pts= {10,10,120,120,230,230,40,40,90,90};

    canvas.drawPoints(pts, paint);

    绘制散点图:

    canvas.drawPoints(pts,3,4, paint);

    跳过pts前3值后开始算4个值的数据(120,230,230,40)

    即绘制(120,230)、(230,40)两个点

    绘制几何图形:

    public GeometryView(Context context) {
    super(context);
    mPaint = new Paint();
    // 设置抗锯齿
    mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
    }

    @Override
    protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    //设置画布颜色 也就是背景颜色
    canvas.drawColor(Color.WHITE);

    mPaint.setColor(Color.BLACK);
    canvas.drawText("绘制无规则几何图形", 150, 30, mPaint);

    //绘制一条线
    mPaint.setColor(Color.BLACK);
    mPaint.setStrokeWidth(4);
    canvas.drawLine(0, 0, 100, 100, mPaint);

    //绘制一个矩形
    mPaint.setColor(Color.YELLOW);
    canvas.drawRect(0, 120, 100, 200, mPaint);

    //绘制一个圆形
    mPaint.setColor(Color.BLUE);
    canvas.drawCircle(80, 300, 50, mPaint);

    //绘制一个椭圆
    mPaint.setColor(Color.CYAN);
    canvas.drawOval(new RectF(300,370,120,100), mPaint);

    //绘制多边形
    mPaint.setColor(Color.BLACK);
    Path path = new Path();
    path.moveTo(150+5 , 400 -50);
    path.lineTo(150+45, 400 - 50);
    path.lineTo(150+30, 460 - 50);
    path.lineTo(150+20, 460 - 50);
    path.close();
    canvas.drawPath(path, mPaint);

    }

    此外还有好多绘制各种简单图形的方法,偷懒就不一一写了,需要的时候可以去查api文档,

    或者在eclipse 敲canvas.draw 按 ALT+/ 提示

      总的来说,Canvas可以绘制的对象有:弧线(arcs)、填充颜色(argb和color)、Bitmap、圆(circle和oval)、点(point)、线(line)、矩形(Rect)、图片(Picture)、圆角矩形(RoundRect)、文本(text)、顶点(Vertices)、路径(path)。通过组合这些对象我们可以画出一些简单有趣的界面出来,但是光有这些功能还是不够的,如果我要画一个仪表盘(数字围绕显示在一个圆圈中)就比较困难(不要告诉我直接贴一张仪表盘的图片上去,如果要让仪表盘指针会动呢?就没辙了吧!)。

      幸好Android还提供了一些对Canvas位置转换的方法:rorate、scale、translate、skew(扭曲)等,而且它允许你通过获得它的转换矩阵对象(getMatrix方法)直接操作它。这些操作就像是虽然你的笔还是原来的地方画,但是画纸旋转或者移动了,所以你画的东西的方位就产生变化。为了方便一些转换操作,Canvas还提供了保存和回滚属性的方法(save和restore类似数据库commit和rollback),比如你可以先保存目前画纸的位置(save),然后旋转90度,向下移动100像素后画一些图形,画完后调用restore方法返回到刚才保存的位置,这些内容将在BitMap的操作中讲到。

    ========个人网站:http://chendd.com/ 文章很多是上面搬过来的,以后都在个人网站上更新,有兴趣的可以移步☺========
  • 相关阅读:
    Spring MVC 核心组件详解
    Spring MVC 入门就这一篇
    Spring 事务解决方案
    【UGUI源码分析】Unity遮罩之Mask详细解读
    游戏开发中不同时区下的时间问题
    ARTS第十三周(阅读Tomcat源码)
    Win10 电脑安装.NET低版本提示“这台计算机中已经安装了 .NET Framwork 4.6.2或版本更高的更新”问题
    Dynamics 365 Setup 提示SqlServer 存在
    Dynamics CRM "Verification of prerequisites for Domain Controller promotion failed. Certificate Server is installed."
    Dynamics CRM
  • 原文地址:https://www.cnblogs.com/aiguozhe/p/3554808.html
Copyright © 2011-2022 走看看