zoukankan      html  css  js  c++  java
  • 4.1.5 绘制形状

        Canvas类定义了多种绘制方法,接下来让我们了解一下这些方法。

        1.点

        这些方法中最简单的是只绘制一个点。为了绘制一个点,可以使用Canvas对象上的drawPoint方法,同时传入x和y位置以及一个Paint对象。

    1  canvas.drawPoint(199, 201, paint);

        待绘制点的大小取决于Paint对象的画笔宽度。

    1         Paint paint=new Paint();
    2         paint.setColor(Color.GREEN);
    3         paint.setStrokeWidth(100);
    4         canvas.drawPoint(199, 201, paint);

        2.直线

        直线就是一条线:一系列点在单一方向上从起点延伸至终点。可以使用Canvas对象的drawLine方法绘制一条直线,并传入起始的x和y坐标、结束x和y坐标以及一个Paint对象。

    1         Paint paint=new Paint();
    2         paint.setColor(Color.GREEN);
    3         paint.setStrokeWidth(10);
    4         int startx=50;
    5         int starty=100;
    6         int endx=150;
    7         int endy=210;
    8         canvas.drawLine(startx, starty, endx, endy, paint);

        3.矩形

        有几种不同的方法可用于绘制矩形,其中最容易的方法是指定左边的y坐标、顶部的x坐标、右边的y坐标和底部的x坐标,以及指定一个Paint对象。

    1         Paint paint=new Paint();
    2         paint.setColor(Color.GREEN);
    3         paint.setStyle(Paint.Style.FILL_AND_STROKE);
    4         paint.setStrokeWidth(10);
    5         int leftx=20;
    6         int topy=20;
    7         int rightx=50;
    8         int bottomy=100;
    9         canvas.drawRect(leftx, topy, rightx, bottomy, paint);

        另一个绘制矩形的方法是传入一个RectF对象,RectF类使用浮点值分别表示左边、顶部、右边以及底部的坐标,以此来定义一个矩形。

     1         Paint paint=new Paint();
     2         paint.setColor(Color.GREEN);
     3         paint.setStyle(Paint.Style.FILL_AND_STROKE);
     4         paint.setStrokeWidth(10);
     5         int leftx=20;
     6         int topy=20;
     7         int rightx=50;
     8         int bottomy=100;
     9         RectF rectangle=new RectF(leftx, topy, rightx, bottomy);
    10         canvas.drawRect(rectangle, paint);

         4.椭圆

         与使用RectF对象绘制矩形的方式相同,也可以使用RectF对象绘制一个椭圆。此时,RectF对象定义椭圆的边界。换句话说,将在矩形的内部绘制椭圆,其中椭圆的最长点位于顶部和底部边界的中点,而椭圆的最宽点位于左边和右边边界的中点。

    1         Paint paint=new Paint();
    2         paint.setColor(Color.GREEN);
    3         paint.setStyle(Paint.Style.STROKE);
    4         int leftx=20;
    5         int topy=20;
    6         int rightx=50;
    7         int bottomy=100;
    8         RectF ovalBounds=new RectF(leftx, topy, rightx, bottomy);
    9         canvas.drawOval(ovalBounds, paint);

        5.圆

        可以通过制定中心点(x和y)和半径来绘制一个圆。

    1         Canvas canvas=new Canvas();
    2         Paint paint=new Paint();
    3         paint.setColor(Color.GREEN);
    4         paint.setStyle(Paint.Style.STROKE);
    5         int x=50;
    6         int y=50;
    7         float radius=20;
    8         canvas.drawCircle(x, y, radius, paint);

        6.路径

        路径是一系列可用来创建任意形状的直线。为了绘制一个路径,首先必须构造一个Path对象。Path对象可以调用任意次数,通过使用MoveTo告诉他无需绘制而直接移动到某个点,或者使用lineTo绘制一条直线到某个点。当然,还有用来绘制弧的方法等。关于这些方法的信息可以在Path类的文档中找到。

        然后,可以将Path对象传递给Canvas对象的drawPath方法。

     1         Paint paint=new Paint();
     2         paint.setColor(Color.GREEN);
     3         paint.setStyle(Paint.Style.STROKE);
     4         Path p=new Path();
     5         //没有初始的“moveTo”,将在(0,0)处开始绘制
     6         p.moveTo(20, 20);
     7         p.lineTo(100, 200);
     8         p.lineTo(200, 100);
     9         p.lineTo(240, 155);
    10         p.lineTo(250, 175);
    11         p.lineTo(20, 20);
    12         canvas.drawPath(p, paint);
  • 相关阅读:
    springboot Filter中无法注入Bean对象的解决办法
    springboot 2.x 采用监控模块
    Spring Cloud Alibaba项目构建(一)
    spring boot完成图片上传下载的功能
    scrapy初探
    RESETFUL四种方式提交区别
    qt TCP UDP-多线程笔记
    [‘1‘,‘2‘,‘3‘].map(parseInt)结果讲解
    安装nprogress进度条插件
    vue项目中扫二维码跳转页面---前端实现过程
  • 原文地址:https://www.cnblogs.com/ZSS-Android/p/3936698.html
Copyright © 2011-2022 走看看