1. View view = activity.getWindow().getDecorView();   
    2. true);   
    3.  
    4. = view.getDrawingCache();


    然后我们需呀计算出我们选定区域的坐标点,注意正选和反选的计算方式不同 ,

      1.   public boolean onTouch(View v, MotionEvent event) {   
      2.     if(event.getAction() == MotionEvent.ACTION_DOWN){   
      3.            x = 0;   
      4.            y = 0;   
      5.            width = 0;   
      6.            height = 0;   
      7.            x = (int) event.getX();   
      8.            y = (int) event.getY();   
      9.        }   
      10.      if(event.getAction() == MotionEvent.ACTION_MOVE){   
      11.            m = (int) event.getX();   
      12.            n = (int) event.getY();   
      13.            myView.setSeat(x, y, m, n);   
      14.            myView.postInvalidate();   
      15.        }   
      16.      if(event.getAction() == MotionEvent.ACTION_UP){   
      17.    if(event.getX()>x){   
      18.         width = (int)event.getX()-x;   
      19.    }else{   
      20.         width = (int)(x-event.getX());   
      21.          x = (int) event.getX();   
      22.    }   
      23.                 if(event.getY()>y){   
      24.         height = (int) event.getY()-y;   
      25.     }else{   
      26.         height = (int)(y-event.getY());   
      27.          y = (int) event.getY();   
      28.    }   
      29.    image2.setImageBitmap(getBitmap(this));   
      30.        }   
      31.    if(myView.isSign()){   
      32.         return false;   
      33.    }else{   
      34.          return true;   
      35.    }   
      36.



      然后为我们计算出来的坐标区域添加选中效果


      1.   protected void onDraw(Canvas canvas) {   
      2.         if(sign){   
      3.    paint.setColor(Color.TRANSPARENT);   
      4.         }else{   
      5.    paint.setColor(Color.RED);   
      6.    paint.setAlpha(80);   
      7.    canvas.drawRect(new Rect(x, y, m, n), paint);   
      8.           }   
      9.    super.onDraw(canvas);   
      10.


      最后生成我们需要的图片展示出来,顺便保存到SD卡下一张。



        1. frame = new Rect();   
        2.      activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);   
        3.      int toHeight = frame.top;   
        4.      bitmap = Bitmap.createBitmap(bitmap, x, y+2*toHeight, width, height);   
        5.      try {   
        6.    FileOutputStream fout = new FileOutputStream("mnt/sdcard/test.png");   
        7.    bitmap.compress(Bitmap.CompressFormat.PNG, 100, fout);   
        8.        } catch (FileNotFoundException e) {   
        9.            // TODO Auto-generated catch block   
        10.            e.printStackTrace();   
        11.        }   
        12.        view.setDrawingCacheEnabled(false);