美文网首页
aide安卓编程10-坐标系的旋转平移缩放

aide安卓编程10-坐标系的旋转平移缩放

作者: 傻傻不知天年 | 来源:发表于2018-10-09 17:57 被阅读0次

    画图部分代码改为:

    Paint p=new Paint();
            p.setTextSize(100);//设置字大小
            p.setColor(Color.rgb(255,100,100));//画笔为深粉红色
            canvas.drawText("早安!",400,100,p);//画字
            canvas.rotate(10);//转坐标系(顺时针转10度)
            canvas.drawText("午安!",400,100,p);//画字
            canvas.translate(0,100);//平移坐标系(向下100)
            canvas.drawText("晚安!",400,100,p);//画字
            canvas.scale(2,1);//缩放坐标系(x方向变为原来2倍,y方向不变)
            canvas.drawText("午安!",400,100,p);//画字
    
    代码
    效果

    这段代码使用了3种坐标变换(旋转,平移,缩放),在新的坐标系中画图。利用这些变换可以画出有角度的字以及各种奇妙的组合图形,对界面绘制很有用。

    其中旋转rotate和缩放scale操作还可以多几个参数来指定参考点,例如:

    canvas.rotate(10,20,35);//以(20,35)为不动点,顺时针转10度`
    canvas.scale(-1,2,3,4);//以(3,4)为中心,横向翻转,纵向放大一倍
    

    注意一旦对画图坐标系改动,之后的绘图代码都按照最新的坐标系执行绘制。

    有时我们在改变坐标系前要保存当前坐标系,以便把坐标系复原。这时使用matrix(矩阵/坐标系)来保存。下面给一个例子:

    Paint p=new Paint();
            p.setTextSize(100);//设置字大小
            p.setColor(Color.rgb(255,100,100));//画笔为深粉红色
            Matrix m=canvas.getMatrix();//保存当前坐标系到新建坐标系m
            canvas.rotate(10);//转坐标系(顺时针转10)
            canvas.setMatrix(m);//把当前坐标系改为保存的坐标系m
            canvas.drawText("早安!",400,100,p);//画字
    
    代码
    效果

    可以看到最终画出的字是没有旋转过的。这是因为使用的是旋转之前保存的坐标系。

    相关文章

      网友评论

          本文标题:aide安卓编程10-坐标系的旋转平移缩放

          本文链接:https://www.haomeiwen.com/subject/oasyaftx.html