Android绘图基础之Canvas & Paint & Rect & RectF

本文介绍了Android图形绘制的基础,包括Rect和RectF的使用,Canvas的绘图方法,如点、线、弧、圆、椭圆、矩形和文本的绘制,以及Paint画笔的属性设置,如颜色、透明度、抗锯齿等。通过这些知识,可以实现自定义View和控件的绘制。
摘要由CSDN通过智能技术生成

转载请注明出处:http://blog.csdn.net/crazy1235/article/details/73611978



Rect & RectF

RectF和Rect都表示的是一个矩形的区域,他们的构造方法类似!

不同的是,Rect 的精度是integer,RectF 的精度是float !!

public Rect(int left, int top, int right, int bottom) {
        this.left = left;
        this.top = top;
        this.right = right;
        this.bottom = bottom;
    }
public RectF(float left, float top, float right, float bottom) {
        this.left = left;
        this.top = top;
        this.right = right;
        this.bottom = bottom;
    }

在RectF.java 中,有这样两个函数

public void round(Rect dst) {
        dst.set(FastMath.round(left), FastMath.round(top),
                FastMath.round(right), FastMath.round(bottom));
    }
public void roundOut(Rect dst) {
        dst.set((int) Math.floor(left), (int) Math.floor(top),
                (int) Math.ceil(right), (int) Math.ceil(bottom));
    }

目的就是将 RectF 转成 Rect


Canvas

Canvas – 画布

canvas 里的方法基本可以分为这么几类:

  • save、restore 等与层的保存和回滚相关的方法;

  • scale、rotate、clipxxx 等对画布进行操作的方法;

  • drawxxx 等一系列绘图相关的方法;

想要画图案,就得需要用到画布(Canvas)、画笔(Paint)、路径(Path)、填充(Shader)。

想要对图案做变形处理,就得用到Matrix(矩阵)


Paint

Paint就是画布上画图用的画笔!

提供了画笔的颜色、透明度、大小、笔刷的风格等属性!

Paint常用属性如下:

  • setARGB/setColor 设置颜色

  • setAlpha 设置透明度

  • setAntiAlias 设置是否抗锯齿

  • setShader 设置画笔的填充效果

  • setShaderLayer 设置阴影

  • setStyle 设置画笔风格(填充模式)

    • Paint.Style.FILL :填充内部

    • Paint.Style.FILL_AND_STROKE :填充内部和描边

    • Paint.Style.STROKE :仅描边

  • setStrokeWidth 设置边框的宽度

  • setStrokeCap() 设置线冒样式

    • Paint.Cap.ROUND : 圆形线冒

    • Paint.Cap.SQUARE:方形线冒

    • Paint.Cap.BUTT:无线冒

  • setStrokeJoin() 设置线段连接处样式

    • Paint.Join.MITER:结合处为锐角

    • Paint.Join.Round:结合处为圆弧

    • Paint.Join.BEVEL:结合处为直线)

  • setStrokeMiter(float miter) :设置笔画的倾斜度

  • setPathEffect(PathEffect effect) :设置路径样式

  • setXfermode(Xfermode xfermode):设置Xfermode样式

  • setTextSize():设置文字大小

  • setTextAlign(Align align) : 设置文字排列方式

  • setTextScaleX(float scaleX):设置文字X轴方向缩放比例,默认值是1.0,大于1.0表示放大,小于1.0表示缩小

  • setTextSkewX(float skewX):设置文字X轴错切


Point

Canvas绘制点有三个重载的函数:

  • drawPoint(float x, float y, @NonNull Paint paint)

  • drawPoints(@Size(multiple=2) @NonNull float[] pts, @NonNull Paint paint)

  • drawPoints(@Size(multiple=2) float[] pts, int offset, int count, @NonNull Paint paint)

paint.setStrokeWidth(50);
paint.setColor(Color.BLACK);
canvas.drawPoint(200, 200, paint); // 点的x、y坐标, 画笔
private float[] points = new float[]{
  10, 10, 100, 10, 200, 100};
canvas.drawPoints(points, paint); // 坐标的数组 + 画笔
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值