• 进阶之旅(一)


    前言:

    从事Android开发一年半啦,只知道每天按照需求计划实现业务的逻辑,其实我知道我最差的就是绘制图形,所以从今天开始回炉重修,一点一滴重新学习,在这里记录一下。说些废话,最近在听一个广播节目,《自控力》,如今的社会真的是太浮躁啦,人们都是依赖电子产品入魔,倒是简书这里如一股清流,在这个浮躁的社会给了我一个明灯,比心,不是专业写博客的,所以排版有点乱。

    工具:Androidstudio、夜神android模拟器

    • 认识Point与Canvas,画笔与画布
    • 认识Rect与RectF
    先介绍Rect与RectF,下面会用到

    相同点都是用于表示坐标系中的一块矩形区域,并可以对其做一些简单操作。这块矩形区域,需要用左上和右下两个坐标点表示。
    区别就是精度不一样。Rect是使用int类型作为数值,RectF是使用float类型作为数值。两个类型提供的方法也不是完全一致。具体使用情况请阅读源码。

    Paint:画笔
    常用函数 函数简介
    setARGB(int a, int r, int g, int b) 设置画笔的颜色,a代表透明度,r,g,b代表颜色值
    setAlpha(int a) 设置alpha不透明度,范围为0~255
    setColor(int color) 设置画笔颜色
    setAntiAlias(boolean aa) 是否抗锯齿
    setTextSize(float textSize) 字体大小
    setStyle(Paint.style style) 设置画笔的风格,Paint.Style. FILL :实心 Paint.Style.FILL_AND_STROKE:同时实心和空心、Paint.Style.STROKE:空心
    Canvas:画布
    常用函数 函数简介
    drawCircle(float cx, float cy, float radius,Paint paint) 绘制圆形,参数1为中心点x轴位置、参数2为中心点y轴位置、参数3为圆形半径、参数4为画笔
    drawLine(float startX, float startY, float stopX, float stopY, Paint paint) 绘制直线,参数1为起点x轴坐标、参数2为起点y轴坐标、参数3为x轴终点坐标、参数4为y轴终点坐标、参数5为画笔
    canvas.drawOval(new RectF(float left, float top, float right, float bottom), p) 绘制矩形,其中RectF中前两个参数表示矩形左上角点的坐标,后两个参数标示右下角点的坐标
    drawRect(RectF rect, Paint paint) 绘制一块区域,参数一为RectF一个区域
    drawPath(Path path, Paint paint) 绘制一个路径,参数一为Path路径对象,通过Path设置路径的起点与终点,也可绘制特殊路径线条 例如:传说中的贝塞尔曲线,只需设置对应的控制节点

    代码块

    @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            Paint paint = new Paint()
            paint.setColor(Color.RED);// 设置红色
            canvas.drawCircle(150, 150, 50, paint);// 小圆
            paint.setAntiAlias(true);
            paint.setARGB(50,0,0,225);
            paint.setAntiAlias(false);
            canvas.drawCircle(300, 300, 100, paint);// 大圆
            RectF oval2 = new RectF(60, 100, 200, 240);// 设置个新的长方形,扫描测量
            canvas.drawArc(oval2, 200, 130, false, paint);
            //画贝塞尔曲线
            paint.setTextSize(30);
            canvas.drawText("画贝塞尔曲线:", 50, 310, paint);
            paint.reset();
            paint.setStyle(Paint.Style.STROKE);
            paint.setColor(Color.GREEN);
            paint.setStrokeWidth(5);
            Path path2=new Path();
            path2.moveTo(100, 320);//设置Path的起点
            path2.quadTo(350, 910, 670, 400); //设置贝塞尔曲线的控制点坐标和终点坐标
            canvas.drawPath(path2, paint);//画出贝塞尔曲线
        
        }
    
    7077845-9c789751a8ca33dc.png
    QQ图片20170802134116.png
    天会亮就会黑 我早就习惯
  • 相关阅读:
    LeetCode OJ-- Interleaving String **@
    二叉树遍历 Morris
    LeetCode OJ--Binary Tree Zigzag Level Order Traversal *
    LeetCode OJ-- Letter Combinations of a Phone Number ***
    【转】 堆和栈的区别
    LeetCode OJ-- Valid Sudoku
    LeetCode OJ--Word Break II ***@
    LeetCode OJ-- Surrounded Regions **@
    add host bat
    SP2013 SP1(kb28805502)补丁安装测试初体验
  • 原文地址:https://www.cnblogs.com/ltzuo/p/12159022.html
Copyright © 2020-2023  润新知