这个操作在我们自定义组件中可以说是十分常见的,方法也是十分的简单。之所以写这篇文章就是因为 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);
}
注意:这个方法就是将 原图 从画布的左上角 全部画出来,如果自定义控件(即画布)太小,便显示不全。
效果如下:
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 是针对谁来取得。
效果如下:
圆角图片的绘制请参考: 自定义组件之圆角图片的绘制