Android的Canvas学习笔记

来源:互联网 发布:mac pro 需要关机吗 编辑:程序博客网 时间:2024/05/20 06:54

第1节clipRect()和translate()区别

初步研究得出了一些结论,首先在自定义View的onDraw()方法的代码如下:

@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);Drawable drawable = getResources().getDrawable(R.drawable.appearing);drawable.setBounds(0, 0, getWidth(), getHeight());drawable.draw(canvas);canvas.save();// 第一种方法// 设置剪切区// canvas.clipRect(10, 10, 60, 60);// canvas.drawColor(Color.BLUE);// 第二种方法// 移动画布canvas.translate(10, 10);canvas.drawRect(r, p);canvas.restore();}

实际运行效果如下:



第一种方法是设置剪切区,第二种方法是移动画布,实际运行出来的效果都如上图一样,在距离父控件的左上距离都为10的地方作为原点,画出一个宽高都为50的蓝色方块。

上面是调用的canvas.drawColor(Color.BLUE),而如果调用的是drawable.draw(canvas),来画一个背景。

canvas.translate(10, 10)后,依然是从点(10,10)开始画而如果是canvas.clipRect(10, 10, 60, 60),则是从(0,0)开始画的。

0 0
原创粉丝点击