Android Clipping


  1. public class Clipping extends Activity {  
  2.     protected void onCreate(Bundle savedInstanceState) {  
  3.         super.onCreate(savedInstanceState);  
  4.         setContentView(new SampleView(this));  
  5.     }  
  6.       
  7.     private static class SampleView extends View {  
  8.         private Paint mPaint;  
  9.         private Path mPath;  
  10.         public SampleView(Context context) {  
  11.             super(context);  
  12.             setFocusable(true);  
  13.               
  14.             mPaint = new Paint();  
  15.             mPaint.setAntiAlias(true);  
  16.             mPaint.setStrokeWidth(6);  
  17.             mPaint.setTextSize(16);  
  18.             mPaint.setTextAlign(Paint.Align.RIGHT);  
  19.               
  20.             mPath = new Path();  
  21.         }  
  22.           
  23.         private void drawScene(Canvas canvas) {  
  24.             canvas.clipRect(00100100);  
  25.               
  26.             canvas.drawColor(Color.WHITE);  
  27.               
  28.             mPaint.setColor(Color.RED);  
  29.             canvas.drawLine(00100100, mPaint);  
  30.               
  31.             mPaint.setColor(Color.GREEN);  
  32.             canvas.drawCircle(307030, mPaint);  
  33.               
  34.             mPaint.setColor(Color.BLUE);  
  35.             canvas.drawText("Clipping"10030, mPaint);  
  36.         }  
  37.           
  38.         @Override protected void onDraw(Canvas canvas) {  
  39.             canvas.drawColor(Color.GRAY);              
  40.             canvas.save();  
  41.             canvas.translate(1010);  
  42.             drawScene(canvas);  
  43.             canvas.restore();  
  44.               
  45.             canvas.save();  
  46.             canvas.translate(16010);  
  47.             canvas.clipRect(10109090);  
  48.             canvas.clipRect(30307070, Region.Op.DIFFERENCE);  
  49.             drawScene(canvas);  
  50.             canvas.restore();  
  51.               
  52.             canvas.save();  
  53.             canvas.translate(10160);  
  54.             mPath.reset();  
  55.             canvas.clipPath(mPath); // makes the clip empty   
  56.             mPath.addCircle(505050, Path.Direction.CCW);  
  57.             canvas.clipPath(mPath, Region.Op.REPLACE);  
  58.             drawScene(canvas);  
  59.             canvas.restore();  
  60.               
  61.             canvas.save();  
  62.             canvas.translate(160160);  
  63.             canvas.clipRect(006060);  
  64.             canvas.clipRect(4040100100, Region.Op.UNION);  
  65.             drawScene(canvas);  
  66.             canvas.restore();  
  67.               
  68.             canvas.save();  
  69.             canvas.translate(10310);  
  70.             canvas.clipRect(006060);  
  71.             canvas.clipRect(4040100100, Region.Op.XOR);  
  72.             drawScene(canvas);  
  73.             canvas.restore();  
  74.               
  75.             canvas.save();  
  76.             canvas.translate(160310);  
  77.             canvas.clipRect(006060);  
  78.             canvas.clipRect(4040100100, Region.Op.REVERSE_DIFFERENCE);  
  79.             drawScene(canvas);  
  80.             canvas.restore();  
  81.         }  
  82.     }  
  83. }  

  • 1
  • 2
  • 下一页

相关内容