第1节clipRect()和translate()区别
初步研究得出了一些结论,首先在自定义View的onDraw()方法的代码如下:
@Override
protected 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)开始画的。
229

被折叠的 条评论
为什么被折叠?



