这个操作在我们自定义组件中可以说是十分常见的,方法也是十分的简单。之所以写这篇文章就是因为  canvas.drawBitmap() 这个方法重载多次,各方法之间时间一长就容易搞混,所以,写下这篇文章以便往后回顾 。

代码演示
drawBitmap(@NonNull Bitmap bitmap, float left, float top, @Nullable Paint paint)

/*
*参数一:要绘制的图片 bitmap
*参数二:左边起始坐标(针对画布)
*参数三:顶部起始坐标(针对画布)
*参数四:绘制画笔,这个地方传 null 即可
*/

//示例:
@Override
protected void onDraw(Canvas canvas) {
    canvas.drawBitmap(mSelfPhoto,0,0,null);
}

注意:这个方法就是将 原图 从画布的左上角 全部画出来,如果自定义控件(即画布)太小,便显示不全。

效果如下:

自定义组件之绘制图片_java

drawBitmap(@NonNull Bitmap bitmap, @Nullable Rect src, @NonNull Rect dst,          
 @Nullable Paint paint)

/*
*参数一:要绘制图片的 bitmap
*参数二:选取矩形区域(针对要绘制的图片来说的)
*参数三:选取矩形区域(针对画布来说的)
*参数四:画笔,一般置为 null
*/

示例:
@Override
protected void onDraw(Canvas canvas) {
   Rect src = new Rect(mSelfPhoto.getWidth()/2-50,mSelfPhoto.getHeight()/2-50,
                mSelfPhoto.getWidth()/2+50,mSelfPhoto.getHeight()/2+50);
   Rect dst = new Rect(0,0,100,100);
   canvas.drawBitmap(mSelfPhoto,src,dst,null);
}

 注意:这个方法就是得注意两个 Rect 是针对谁来取得。

效果如下:

自定义组件之绘制图片_ide_02

圆角图片的绘制请参考: 自定义组件之圆角图片的绘制