Android Api Demos登顶之路(八十六)Graphics-->Regions
来源:互联网 发布:淘宝店主真人内衣展示 编辑:程序博客网 时间:2024/05/16 07:58
/*这个demon演示了Region的不同的组合方式。 组合即当前的Region和另外的一个Region组合,可以用不同的Op方式来进行组合。Op是一个枚举,定义在Region类中。假设用region1 去组合region2 public enum Op { DIFFERENCE(0), //最终区域为region1 与 region2不同的区域 INTERSECT(1), // 最终区域为region1 与 region2相交的区域 UNION(2), //最终区域为region1 与 region2组合一起的区域 XOR(3), //最终区域为region1 与 region2相交之外的区域 REVERSE_DIFFERENCE(4), //最终区域为region2 与 region1不同的区域 REPLACE(5); //最终区域为为region2的区域 } */public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new SampleView(this)); } private class SampleView extends View{ private Paint mPaint=new Paint(); private Rect mRect1=new Rect(); private Rect mRect2=new Rect(); public SampleView(Context context) { super(context); setFocusable(true); mPaint.setAntiAlias(true); mPaint.setTextSize(16); mPaint.setTextAlign(Paint.Align.CENTER); mRect1.set(10, 10, 100, 80); mRect2.set(50, 50, 130, 110); } @Override protected void onDraw(Canvas canvas) { canvas.drawColor(Color.GRAY); canvas.save(); canvas.translate(80, 5); //绘制原始图形 drawOrginalRects(canvas,0xff); canvas.restore(); canvas.save(); canvas.translate(0, 120); //绘制组合在一起的区域 drawRgn(canvas,Color.RED,"union",Region.Op.UNION); canvas.restore(); canvas.save(); canvas.translate(160, 120); //绘制组合在一起的区域 drawRgn(canvas,Color.BLUE,"Xor",Region.Op.XOR); canvas.restore(); canvas.save(); canvas.translate(0, 260); //绘制组合在一起的区域 drawRgn(canvas,Color.GREEN,"Difference",Region.Op.DIFFERENCE); canvas.restore(); canvas.save(); canvas.translate(160, 260); //绘制组合在一起的区域 drawRgn(canvas,Color.WHITE,"union",Region.Op.INTERSECT); canvas.restore(); } private void drawRgn(Canvas canvas, int color, String str, Op op) { if(str!=null){ mPaint.setColor(Color.BLACK); canvas.drawText(str, 80, 24, mPaint); } //定义一个区域 Region rgn=new Region(); rgn.set(mRect1); rgn.op(mRect2, op); mPaint.setColor(color); //定义一个区域迭代器 RegionIterator iter=new RegionIterator(rgn); Rect r=new Rect(); canvas.translate(0, 30); while(iter.next(r)){ //迭代所有的rect并绘制 canvas.drawRect(r, mPaint); } drawOrginalRects(canvas, 0x88); } private void drawOrginalRects(Canvas canvas, int alpha) { mPaint.setStyle(Paint.Style.STROKE); mPaint.setColor(Color.RED); mPaint.setAlpha(alpha); drawCentered(canvas,mRect1,mPaint); mPaint.setColor(Color.BLUE); mPaint.setAlpha(alpha); drawCentered(canvas,mRect2,mPaint); //canvas.drawRect(mRect2, mPaint); mPaint.setStyle(Paint.Style.FILL); } //将外边框的宽度设置为0.5个像素 private void drawCentered(Canvas canvas, Rect r, Paint p) { float inset=p.getStrokeWidth()*0.5f; if(inset==0){ inset=0.5f; } canvas.drawRect(r.left+inset, r.top+inset, r.right-inset, r.bottom-inset, p); } }}
0 0
- Android Api Demos登顶之路(八十六)Graphics-->Regions
- Android Api Demos登顶之路(六十五)Graphics-->AlphaBitmap
- Android Api Demos登顶之路(六十七)Graphics-->Arcs
- Android Api Demos登顶之路(六十八)Graphics-->DecodeBitmap
- Android Api Demos登顶之路(七十一)Graphics-->Cliping
- Android Api Demos登顶之路(七十三)Graphics-->Compass
- Android Api Demos登顶之路(七十四)Graphics-->CreateBitmap
- Android Api Demos登顶之路(七十五)Graphics-->GradientDrawable
- Android Api Demos登顶之路(七十六)Graphics-->ShapeDrawable
- Android Api Demos登顶之路(七十七)Graphics-->FingerPaint
- Android Api Demos登顶之路(七十八)Graphics-->MeansureText
- Android Api Demos登顶之路(七十九)Graphics-->PathEffects
- Android Api Demos登顶之路(八十)Graphics-->PathFillTypes
- Android Api Demos登顶之路(八十一)Graphics-->Patterns
- Android Api Demos登顶之路(八十二)Graphics-->Picture
- Android Api Demos登顶之路(八十三)Graphics-->Point
- Android Api Demos登顶之路(八十四)Graphics-->PolyToPoly
- Android Api Demos登顶之路(八十五)Graphics-->PurgeableBitmap
- Candy
- 写博客想写什么就写点什么
- centos7下安装vmware 出现C header files matching your running kernel were not found.
- JAVA native 本地方法
- SpriteBuilder中关节的Breaking force属性
- Android Api Demos登顶之路(八十六)Graphics-->Regions
- requestAnimationFrame在Chrome里的实现
- 常用命令总结
- 支持向量机通俗导论(理解SVM的三层境界)
- SpriteBuilder实际操作中如何确定合适Breaking force的值
- Pow(x, n)
- linux学习记录(一)
- 转载android 规范技巧
- 流体动力学基本方程