• Android学习笔记之Bitmap位图的旋转


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

    通过postRotate方法设置旋转角度,然后用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(1f, 1f);  
    35.         // 向左旋转45度,参数为正则向右旋转  
    36.         matrix.postRotate(-45);  
    37.         //bmp.getWidth(), 500分别表示重绘后的位图宽高  
    38.         Bitmap dstbmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), 500,  
    39.                 matrix, true);  
    40.         // 在画布上绘制旋转后的位图  
    41.         //放在坐标为0,200的位置  
    42.         canvas.drawBitmap(dstbmp, 0, 200, null);  
    43.     }  
    44. }  


     

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

  • 相关阅读:
    USACO / Longest Prefix最长前缀(DP)
    (转)HDOJ 4006 The kth great number(优先队列)
    STL priority_queue(优先队列(堆))
    康托展开
    USACO / Magic Squares(经典BFS+Cantor展开hash)
    国家集训队论文分类整理
    国家集训队论文分类整理
    国家集训队论文分类整理
    OI / ACM 知识归纳
    学年总结跋涉ACM之路
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/6721733.html
Copyright © 2020-2023  润新知