zoukankan      html  css  js  c++  java
  • 图形处理的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);        
     
  • 相关阅读:
    Struts2拦截器
    Struts2执行过程
    struts.xml属性extends的执行顺序和剖析源码
    Struts2请求流程图
    8.29 脏检查笔记
    transactionManager 以及datasource type解析
    Mybatis
    Interceptor
    ongl(示例3-6 多值类型的数据处理)
    ongl(原始类型和包装类型)
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/6067289.html
Copyright © 2011-2022 走看看