View和SurfaceView绘制图像,从SurfaceView中获取不到图片

- 为啥从SurfaceView中获取不到图片- https://www.jianshu.com/p/05a8f7e1dd3d
普通View生成图片的原理,view.getDrawingCache()
public Bitmap getBitmapFromView(View view){
    if (view == null) {
        return null;
    }
    
    view.setDrawingCacheEnabled(true);
    Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
    view.setDrawingCacheEnabled(false);
    view.destroyDrawingCache();
    
    return bitmap;
}

 普通View生成图像的原理就是,生成一个新的Bitmap,把这个新的Bitmap设置给一个Canvas,然后再调用源View的Draw方法,将图像原型绘制到新Bitmap上。简单说,就是通过Canvas把源View的图像原型绘制到新Bitmap中,这样再将新Bitmap保存起来就得到了View的图像。

  在Android中绘制一个二维图像需要四个基本组件:
1、a Bitmap:保存图像像素数据(to hold the pixels)
2、a Canvas:包含一系列绘制和图像变换的方法(to host the draw calls,writing into the bitmap)
3、a drawing primitive:图像原型 (e.g. Rect, Path, text, Bitmap)
4、a paint:画笔描述绘制颜色、风格 (to describe the colors and styles for the drawing)
一句话描述:canvas 用画笔把图像原型绘制到bitmap上。

  View和SurfaceView上绘制图像,它们的共同点是都是用canvas来绘制图像。不同的地方是普通View是从复写的onDraw(Canvas canvas)方法中获取到canvas的,而SurfaceView是从surface中获取canvas来绘制的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值