Android绘制时的坐标系变换

本文详细介绍了Android中Canvas坐标变换的过程,包括从屏幕坐标系到窗口坐标系的转换,以及如何通过translate、rotate和scale进行平移、旋转和缩放。通过对坐标变换的理解,开发者可以更方便地在绘制时指定图形的位置和形状。Canvas的save()和restore()方法用于保存和恢复变换状态,确保绘制的准确性和灵活性。
摘要由CSDN通过智能技术生成

坐标系的变换就是变换前后的映射关系。只要理清这个变换关系就什么都明白了。

现在从屏幕坐标系开始(即以屏幕左上角为原点的坐标系)

变换到窗口坐标系:假如窗口左上角的坐标(下面都是指当前坐标系中的坐标)为(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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值