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. }  


     

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

  • 相关阅读:
    AFNet3.0上传图片
    最新 AFNetworking 3.0 简单实用封装
    iOS开发密码输入数字和字母混合
    IOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)(转)
    iOS开发探索-图片压缩处理
    常用第三方框架插件
    2.1创建直线
    1.4用向导创建Hello,world程序
    vs2008找不到ObjectARX MFC Support
    vc6.0错误:error C2653: 'CCreateEnt' : is not a class or namespace name
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/6721737.html
Copyright © 2011-2022 走看看