/**
* 位图缩放和旋转
* 位图缩放
(1)将一个位图按照需求重画一遍,画后的位图就是我们需要的了,与位图的显示几乎一样:drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)。
(2)在原有位图的基础上,缩放原位图,创建一个新的位图:CreateBitmap(Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter)
(3)借助Canvas的scale(float sx, float sy) (Preconcat the current matrix with the specified scale.),不过要注意此时整个画布都缩放了。
(4)借助Matrix:
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.pic180);
Matrix matrix=new Matrix();
matrix.postScale(0.2f, 0.2f);
Bitmap dstbmp=Bitmap.createBitmap(bmp,0,0,bmp.getWidth(),
bmp.getHeight(),matrix,true);
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(dstbmp, 10, 10, null);
*
*/
public class Main26 extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main26);
ImageView main26_yuan = (ImageView)findViewById(R.id.main26_yuan);
ImageView main26_xiao = (ImageView)findViewById(R.id.main26_xiao);
ImageView main26_zhuan = (ImageView)findViewById(R.id.main26_zhuan);
//获取原始位图
Bitmap bmp=BitmapFactory.decodeResource(this.getResources(), R.drawable.ic_launcher);
BitmapDrawable bmpDraw=new BitmapDrawable(bmp);
main26_yuan.setImageDrawable(bmpDraw);
//放缩图片
// 获得图片的宽高
int width = bmp.getWidth();
int height = bmp.getHeight();
// 设置想要的大小
int newWidth = 100;
int newHeight = 100;
// 计算缩放比例
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
// 取得想要缩放的matrix参数
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
// 得到放大后新的图片
Bitmap newbm = Bitmap.createBitmap(bmp, 0, 0, width, height, matrix,
true);
// 放在画布上
Canvas canvas=new Canvas();
Paint paint=new Paint();
paint.setColor(Color.RED);
canvas.drawBitmap(newbm, 0, 0, paint);
main26_xiao.setImageBitmap(newbm);
/**
* 借助Matrix:
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.pic180);
Matrix matrix=new Matrix();
matrix.postScale(0.2f, 0.2f);
Bitmap dstbmp=Bitmap.createBitmap(bmp,0,0,bmp.getWidth(),
bmp.getHeight(),matrix,true);
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(dstbmp, 10, 10, null);
*/
//位图旋转
matrix.postScale(0.8f, 0.8f); //放缩
matrix.postRotate(45);
Bitmap dstbmp=Bitmap.createBitmap(bmp,0,0,bmp.getWidth(),
bmp.getHeight(),matrix,true);
canvas.drawBitmap(dstbmp, 10, 10, null);
main26_zhuan.setImageBitmap(dstbmp);
}
}
位图缩放和旋转main26
最新推荐文章于 2022-05-11 09:46:34 发布