美文网首页Android 开发精要系列文章
canvas.drawBitmap()的三个最常用的调用方法,

canvas.drawBitmap()的三个最常用的调用方法,

作者: ahking17 | 来源:发表于2017-07-12 17:26 被阅读2884次
    canvas.drawBitmap()的3个方法介绍

    <1> drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint)
    一般给src 设置为null即可, 把bitmap画到指定的矩形空间内.

    eg.
    canvas.drawBitmap(bird, null, new RectF(birdMovePointX, birdMovePointY, birdMovePointX + birdsSize, birdMovePointY + birdsSize), null);
    

    <2> drawBitmap(Bitmap bitmap, float left, float top, Paint paint)
    把bitmap显示到left, top所指定的左上角位置.

    eg.
    canvas.drawBitmap(bigPoleBitmap, bigPoleX, bigPoleY, paint);
    

    <3> drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint)
    使用一个Matrix参数, 用matrix对象来指定图片要显示的位置, 以及要采用什么具体的形变.

    eg.

    Bitmap treeLeaf;
    Matrix treeLeaf_Matrix = new Matrix();
    //scale, 缩放.
    //*** 并且对treeLeaf_Matrix对象进行reset().
    treeLeaf_Matrix.setScale(SCALESIZELEAF, SCALESIZELEAF); 
    //translate, 位移, 对图片中的每个像素点实现位移.
    treeLeaf_Matrix.postTranslate(moveLeafX + 2 * degreeX, moveLeafY - degreeY); 
    //旋转
    treeLeaf_Matrix.postRotate((float) (randomRotate + rotateValueLeaf - 60)
        , moveLeafX + treeLeaf.getWidth() * SCALESIZELEAF / 2 + 2 * degreeX, moveLeafY + treeLeaf.getHeight() * SCALESIZELEAF / 2 - degreeY);
    
    canvas.drawBitmap(treeLeaf, treeLeaf_Matrix, treeLeafPaint);
    
    使用 Matrix类对图片实现形变后, 再进行显示

    Matrix 类是用来实现对图像产生形变, 实现原理是基于: 图片在内存中存放的就是一个一个的像素点,而对于图片的变换主要是处理图片的每个像素点,对每个像素点进行相应的变换,即可完成对图像的变换。
    在上面的例子中, 使用了postTranslate(), postRotate()这样的post() 系列方法, 还用了setScale()这类的set()系列方法, 例如setTranslate(float dx,float dy).
    set()和post()的区别是:
    set()相当于对matrix对象先重置reset(), 再施加形变操作.
    post
    ()相当于在已有的matrix对象的基础上, 再添加一个新的形变操作.
    还有一类是pre()方法, 相当于在已有的matrix对象的基础上, 在之前添加一个新的形变操作, 在实际开发中, 用pre()这类方法的地方并不多.

    refer to:
    http://www.cnblogs.com/plokmju/p/android_Matrix.html
    http://longshuai2007.blog.163.com/blog/static/14209441420117521823875/

    ---DONE.---

    相关文章

      网友评论

        本文标题:canvas.drawBitmap()的三个最常用的调用方法,

        本文链接:https://www.haomeiwen.com/subject/nogbhxtx.html