关于减肥的好方法_canvas叠加图层

关于减肥的好方法_canvas叠加图层最近在研究二维码的生成问题时,需要用到canvas.drawBitmap,这个方法有很多重载方法,写下本人的一些见解

关于减肥的好方法_canvas叠加图层"

最近在研究二维码的生成问题时,需要用到canvas.drawBitmap,这个方法有很多重载方法,写下本人的一些见解。

1.drawBitmap(Bitmap bitmap, float left, float top, Paint paint)

这是很常用的一个方法,参数理解很简单:
bitmap:需要绘制的bitmap
left:绘制区域与左边界距离
top:绘制区域与上边界距离
paint:画笔,可为null

2.drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)

根据指定区域绘制bitmap
bitmap:需要绘制的bitmap
src:bitmap需要绘制的区域,若src的面积小于bitmap时会对bitmap进行裁剪,一般来说需要绘制整个bitmap时可以为null
dst:在画布中指定绘制bitmap的区域,当这个区域的面积与bitmap要显示的面积不匹配时,会进行拉伸,不可为null
paint:画笔,可为null

3.drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint)

本质上跟2功能是一样的,区别在与RectF的参数接收的float,而Rect是int,都是指定一块区域

注:Rect(int left, int top, int right, int bottom)的四个参数指的都是距离左边界和上边界的距离,可以理解为原点做左上角,向右和向下分别为x,y,RectF同理。

4.scale(float sx, float sy, float px, float py)

sx:x轴缩放比例
sy:y缩放比例
px:缩放中心x
py:缩放中心y
下面放上将logo添加至图片中心例子:

private Bitmap addScaleLogo(Bitmap QRBitmap, Bitmap logo) {
        Bitmap blankBitmap = Bitmap.createBitmap(QRBitmap.getWidth(), QRBitmap.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(blankBitmap);
        canvas.drawBitmap(QRBitmap, 0, 0, null);
//        canvas.save();
        float scaleX = (float) (QRBitmap.getWidth()/5.0/ logo.getWidth());
        float scaleY = (float) (QRBitmap.getHeight()/5.0 / logo.getHeight());
        canvas.scale(scaleX,scaleY, (float) (QRBitmap.getWidth()/2.0),(float) (QRBitmap.getHeight()/2.0));
//此时画笔已按比例在中心缩放,所以放进去的东西都会缩放,故left和top还是原来的
        canvas.drawBitmap(logo, ((float)((QRBitmap.getWidth() - logo.getWidth())/2.0)), ((float)((QRBitmap.getHeight() - logo.getHeight())/2.0)),null);
//        canvas.restore();
        return blankBitmap;
    }

今天的文章关于减肥的好方法_canvas叠加图层分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/71793.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注