码迷,mamicode.com
首页 > 其他好文 > 详细

对canvas的translate()方法的理解

时间:2015-04-12 22:51:00      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

数学里的矩阵变化有很多,包括矩阵的平移、旋转和缩放等。在图形变换中,经常会对图形进行矩阵变化。抽象起来讲,一个个图形在屏幕上其实就是一排矩阵,在进行矩阵变化的时候,还能采用硬件加速,大大提高效率。

本节主要将与举证平移相关的问题:


设某点向x方向移动 dx, y方向移动 dy ,[x,y]为变换前坐标, [X,Y]为变换后坐标。

则 X = x+dx;  Y = y+dy;

以矩阵表示:

                                1    0   0

[X, Y, 1] = [x, y, 1][ 0    1   0  ] ;

                               dx  dy   1

 1    0    0

 0    1    0   即平移变换矩阵。

 dx  dy   1

所以:

            canvas.save();//锁画布(为了保存之前的画布状态)
            canvas.translate(10, 10);//把当前画布的原点移到(10,10),后面的操作都以(10,10)作为参照点,默认原点为(0,0)
            drawScene(canvas);
            canvas.restore();//把当前画布返回(调整)到上一个save()状态之前

            canvas.save();//锁画布(为了保存之前的画布状态)
            canvas.translate(160, 10);//把当前画布的原点移到(160,10),后面的操作都以(160,10)作为参照点,
            canvas.clipRect(10, 10, 90, 90);//这里的真实坐标为左上(170,170)、右下(250,250)
            canvas.clipRect(30, 30, 70, 70, Region.Op.DIFFERENCE);
            drawScene(canvas);
            canvas.restore();

在canvas.tranlate(float dx,float dy)中,就是对当前画布矩阵做平移变换,x方向移动dx,y方向上移动dy。

对canvas的translate()方法的理解

标签:

原文地址:http://blog.csdn.net/theone10211024/article/details/45013969

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!