坐标系的变换就是变换前后的映射关系。只要理清这个变换关系就什么都明白了。
现在从屏幕坐标系开始(即以屏幕左上角为原点的坐标系)
变换到窗口坐标系:假如窗口左上角的坐标(下面都是指当前坐标系中的坐标)为(0, 20)
如:坐标系平移:Canvas#translate(0, 20);则Canvas当前的坐标系是窗口坐标系(即以窗口左上角为原点)。变换的意义何在,方便我们在绘图时更加方便,如我们需要以(20,20)(窗口坐标系)为圆心绘制一个圆,在没有变换之前(在屏幕坐标系),代码为:Canvas.drawCircle(0+20, 20+20,int半径,Paint),因为最终绘制是要映射到屏幕坐标的,因为屏幕坐标应该是跟物理屏幕有对应关系的,可能是对应的坐标对应了屏幕中的某个像素点。所以你要操作哪个像素点,你需要指明在屏幕坐标系中的坐标。在Canvas中做了坐标变换后,如刚才变换到了窗口坐标系,那么你在使用Canvas工具绘图时,在指定绘制像素点的坐标时,你只需在窗口坐标系中指定坐标就行,如上面所说画圆,直接Canvas.drawCircle(20, 20, int半径, Paint)即可,然后画到画布(与Canvas关联的Surface)去的时候,会根据之前的变换,计算出你要绘制的点在屏幕坐标系中的坐标。所以在旋转,放大,平移滑动,并不是画布在动让你去画,而是通过坐标系变换,让你点经过计算对应到屏幕坐标系中,而变换过程,Can