安卓学习笔记---(Canvas)

不说废话直接把知识点列出来

1,对canvas进行缩放后之前绘制的图形大小是不变的例如

        canvas.drawCircle(0, 0, 56, paint);
        canvas.scale(2.0f, 2.0f);
        canvas.drawCircle(100, 100, 56, paint);

这段代码先绘制了一个56半径的圆,然后把画布放大两倍绘制第二个圆,绘制的结果第二个圆的半径是第一个圆的两倍

2,与缩放一样,将画布进行旋转之后再进行绘制,之前绘制的图形位置不会改变

        canvas.save();
        canvas.translate(width / 2, height / 2);
        Paint paint = new Paint();
        paint.setColor(Color.RED);
        for (int i = 0; i <= 60; i++) {
            canvas.drawLine(0, 50, 0, 50 + 2 * i, paint);
            canvas.rotate(6);
        }
        canvas.restore();

上面的代码绘制的图形如下
这里写图片描述

3,画布的默认原点实在左上角的(0,0),建议绘制的时候将画布移动到控件的中央 代码如下

canvas.translate(width / 2, height / 2);

width 和 height分别是控件的宽高

4, Paint.setStrokeJoin(Join join)设置结合处的样子,
Miter:结合处为锐角,
Round:结合处为圆弧(这样画出来的 图形会比较圆滑)
BEVEL:结合处为直线

5, paint.setAntiAlias(true); //防锯齿(解决画出的图形边缘出现锯齿状的现象 默认是false的)

6,看别人博客发现的知识点,描述的很好
这里写图片描述

7,canvas.skew(1, 0.5f);使画布倾斜 (第一个参数是x方向倾斜的角度的tan值,第二个是y方向的角度的tan值,) 例:
canvas.skew(1, 0) //在x方向上倾斜45度
canvas.skew(0, 1) //在y方向上倾斜45度

 canvas.save();

        canvas.translate(width / 2, height / 2);
        Paint paint = new Paint();
        paint.setAntiAlias(true);
        paint.setStrokeWidth(5);
//        paint.setStrokeJoin(Paint.Join.ROUND);
//        paint.setStrokeCap(Paint.Cap.ROUND);
        paint.setColor(Color.RED);
        paint.setStrokeMiter(50);
        canvas.skew(1, 0.5f);//关键代码,使画布倾斜
        for (int i = 0; i <= 60; i++) {
            canvas.drawLine(0, 50, 0, 50 + 2 * i, paint);
            canvas.rotate(6);
        }
        canvas.restore();

上面代码实现的效果如下
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值