对Android canvas的一点粗浅理解
2011-12-29 14:28
295 查看
这几天看了android 的canvas, 这里做个小结,不一定对,请大家指正
1. 任何visible的物体继承自view,这就有具体的属性,比如这个view的大小,位置等等。Android会根据你的程序形成一根view树,通过测量大小(onMeasure),确定位置,再调用ondraw进行实际的图形绘制。
2. 在onDraw中,有一个canvas,可以看成是一块画布。这块画布我试了下,它自身是以你view的可见区域的左上角为原点的。比如一个屏幕平分成两个view,左边的canvas的原点是(0,0),右边是(1/2 SCREEN,0)。
3. 在canvas上作画,是以canvas的原点为原点的,也就是说,你用canvas.drawline画一条直线,坐标系不是屏幕,而是canvas自身原点那个坐标系。
4. 在作canvas的translate, rotate时,记住,canvas本身是不变的,它会影响后面画上去的图。也就是说你在canvas上作画的顺序为
a). 作画,比如canvas.drawLine,你画了一条直线
b). 直线上的点需要再加上canvas.matrix。举个例子,你在画直线前设置了canvas.translate(100,100).则这条直线就需要做translate动作。
c). 当画完直线后,我们一般restore回去,这样后面再画上去的图形就不会translate了
切记,canvas是不变的,不然你会觉得很乱。
1. 任何visible的物体继承自view,这就有具体的属性,比如这个view的大小,位置等等。Android会根据你的程序形成一根view树,通过测量大小(onMeasure),确定位置,再调用ondraw进行实际的图形绘制。
2. 在onDraw中,有一个canvas,可以看成是一块画布。这块画布我试了下,它自身是以你view的可见区域的左上角为原点的。比如一个屏幕平分成两个view,左边的canvas的原点是(0,0),右边是(1/2 SCREEN,0)。
3. 在canvas上作画,是以canvas的原点为原点的,也就是说,你用canvas.drawline画一条直线,坐标系不是屏幕,而是canvas自身原点那个坐标系。
4. 在作canvas的translate, rotate时,记住,canvas本身是不变的,它会影响后面画上去的图。也就是说你在canvas上作画的顺序为
a). 作画,比如canvas.drawLine,你画了一条直线
b). 直线上的点需要再加上canvas.matrix。举个例子,你在画直线前设置了canvas.translate(100,100).则这条直线就需要做translate动作。
c). 当画完直线后,我们一般restore回去,这样后面再画上去的图形就不会translate了
切记,canvas是不变的,不然你会觉得很乱。
相关文章推荐
- android绘图canvas的sava、restore、rotate以及若干问题,canvas绘图的理解
- Android 进程 线程 粗浅理解
- 在Android上实现WLAN的一点理解
- 2.7-3 Android Studio 的Gradle一点理解, 查看gradle 版本和android 插件的版本
- Android之Canvas.drawCircle()方法的理解
- 我对Android中apk文件进行签名的一点理解
- android:layout_weight的一点理解
- android中对Canvas.drawCircle()方法的理解
- Android canvas rotate方法的理解
- 在Android上实现WLAN的一点理解
- Android搜索中前缀匹配的一点理解
- android之绘图——Canvas,bitmap,Paint的理解
- Android画布canvas rotate,translate的理解
- Android canvas.save()和canvas.restore()的理解
- Android:对service的一点理解1
- 深入理解View知识系列三-Window机制、Canvas的由来、Android事件的由来
- 粗浅理解接口在Android开发中的用途
- android 自定义view时,重写onDraw(),对Canvas的理解
- Android measure和layout的一点理解
- android下关于Canvas和Drawable的一点认识