自定义View-剪切区

Canvas 提供了剪切区的功能,剪切区可以是一个 Rect 或者是一个 Path,两个剪切区还能进
行图形运算,得到更加复杂的剪切区。我们来看看相关的方法:
public boolean clipRect(Rect rect)
public boolean clipRect(RectF rect)
public boolean clipRect(float left,float top,float right,float bottom)
public boolean clipRect(int left,int top,int right,int bottom)

以上 4 个方法定义一个矩形的剪切区


public boolean clipPath(Path path)

以上方法定义一个 Path 剪切区,用于定义更加复杂的区域。


MainActivity:

public class ClipView extends View {
    public ClipView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Bitmap bmpDog = BitmapFactory.decodeResource(getResources(), R.mipmap.tiger);
        //绘制老虎完整照片
        canvas.drawBitmap(bmpDog, 0, 0, null);
        //平移坐标
        canvas.translate(0, 300);//先把整个画布向下移动300个单位
        //定义剪切区
        canvas.clipRect(new Rect(0, 0, 200, 200));//调用clipRect()方法后,只会显示被裁剪的区域,之外的区域将不会显示
        //再次绘制老虎照片
        canvas.drawBitmap(bmpDog, 0, 0, null);//把裁剪后的图像画出来
    }
}

结果:


注意:最后运行结果第一张和第二张之间有300个单位

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值