图形处理的api

  [1]旋转 
    
public class MainActivity extends Activity {
    

    private float degrees;// 图片旋转的角度
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //[1]找到我们关心的控件 
        ImageView iv_src = (ImageView) findViewById(R.id.iv_src);
        final ImageView iv_copy = (ImageView) findViewById(R.id.iv_copy);
        
        //[2] 把tomcat.png 转换成bitmap 然后显示到iv_src 
        final Bitmap srcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.tomcat);
        
        //[2.1 test] 修改原图   原图不可以被修改
        //srcBitmap.setPixel(20, 30, Color.RED);
        
        iv_src.setImageBitmap(srcBitmap);
        
        
        new Thread(){public void run() {
            
            for (int i = 0; i < 100; i++) {
                
                degrees += 5;
                
                //[3]拷贝原图   
                
                //[3.1]创建模板  
                final Bitmap copybitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), srcBitmap.getConfig());
                //[3.2]想作画 需要一个画布   以copybitmap为模板  
                Canvas  canvas = new Canvas(copybitmap);
                //[3.3]创建一个画笔  
                Paint paint = new Paint();
                //[3.4]开始作画   srcBitmap参考原图去画
                 Matrix matrix = new Matrix();
                
                 //[3.5]对图片进行旋转   
                 matrix.setRotate(degrees, srcBitmap.getWidth()/2, srcBitmap.getHeight()/2);
                canvas.drawBitmap(srcBitmap,matrix, paint);
                
                //☆ 注意不能在子线程更新ui 
                runOnUiThread(new  Runnable() {
                    public void run() {
                        //这个方法里面的逻辑一定是在主线程执行
                        //[4]把copybitmap显示到iv_copy上
                        iv_copy.setImageBitmap(copybitmap);
                        
                    }
                });
                
                SystemClock.sleep(1000);
                        
            }
            
            
            
        };}.start();
        
        
        
        
    }

    
}

  [2]缩放
    matrix.setScale(0.5f, 0.5f);

  [3]位移 
   matrix.setTranslate(20, 0);  
  [4]倒影效果
// [3.5]对图片缩放处理 
        matrix.setScale(1.0f, -1.0f);
        //让图片进行移动 
        //matrix.setTranslate(0, srcBitmap.getHeight());
        //post是在上一次修改的基础上进行修改   set每次每次都是新的变化 会覆盖上一次修改 
        matrix.postTranslate(0, srcBitmap.getHeight());

 [5]镜面效果

        //[3.6]镜面效果 
        matrix.setScale(-1.0f, 1.0f);
        matrix.postTranslate(srcBitmap.getWidth(), 0);        
 
原文地址:https://www.cnblogs.com/xufengyuan/p/6067289.html