zoukankan      html  css  js  c++  java
  • Android 学习笔记之Bitmap位图的缩放

    位图的缩放也可以借助Matrix或者Canvas来实现。

    通过postScale(0.5f, 0.3f)方法设置旋转角度,然后用createBitmap方法创建一个经过缩放处理的Bitmap对象,最后用drawBitmap方法绘制到屏幕上,于是就实现了缩放操作。

    下面例子中把原位图和经缩放处理的位图都绘制到屏幕上,目的是做一个对比。

    1. package xiaosi.bitmap;  
    2.   
    3. import android.app.Activity;  
    4. import android.os.Bundle;  
    5.   
    6. public class mianActivity extends Activity  
    7. {  
    8.   
    9.     private BitmapView bitmapView = null;  
    10.     @Override  
    11.     protected void onCreate(Bundle savedInstanceState)  
    12.     {  
    13.         super.onCreate(savedInstanceState);  
    14.         bitmapView = new BitmapView(this);  
    15.         setContentView(bitmapView);  
    16.     }  
    17. }  


     

    BitmapView.Java

    1. package xiaosi.bitmap;  
    2.   
    3. import android.content.Context;  
    4. import android.content.res.Resources;  
    5. import android.graphics.Bitmap;  
    6. import android.graphics.BitmapFactory;  
    7. import android.graphics.Canvas;  
    8. import android.graphics.Color;  
    9. import android.graphics.Matrix;  
    10. import android.view.View;  
    11.   
    12. public class BitmapView extends View  
    13. {  
    14.     public BitmapView(Context context)  
    15.     {  
    16.         super(context);  
    17.     }  
    18.   
    19.     //重写onDraw方法  
    20.     public void onDraw(Canvas canvas)  
    21.     {  
    22.         // 获取资源文件的引用res  
    23.         Resources res = getResources();  
    24.         // 获取图形资源文件  
    25.         Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.h);  
    26.         // 设置canvas画布背景为白色  
    27.         canvas.drawColor(Color.BLACK);  
    28.         // 在画布上绘制缩放之前的位图,以做对比  
    29.         //屏幕上的位置坐标是0,0  
    30.         canvas.drawBitmap(bmp, 0, 0, null);  
    31.         // 定义矩阵对象  
    32.         Matrix matrix = new Matrix();  
    33.         // 缩放原图  
    34.         matrix.postScale(0.5f, 0.3f);  
    35.         //bmp.getWidth(), bmp.getHeight()分别表示缩放后的位图宽高  
    36.         Bitmap dstbmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(),  
    37.                 matrix, true);  
    38.         // 在画布上绘制旋转后的位图  
    39.         //放在坐标为60,460的位置  
    40.         canvas.drawBitmap(dstbmp, 60, 460, null);  
    41.     }  
    42. }  


     

    源代码下载:点击打开链接

  • 相关阅读:
    凸透镜和凹透镜为什么分别对光有会聚作用和发散作用
    平面镜成像
    行政 申论 大纲
    专业科 大纲
    linux command --- terminal common commands
    3D VR卡镜的使用方法
    Structure From Motion(二维运动图像中的三维重建)
    双目摄像机
    对比手机SLAM和机器人SLAM
    3D indoor map positioning with a smartphone image
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/6722662.html
Copyright © 2011-2022 走看看