2012-05-13 11 views
6

मैं एक परिपत्र क्षेत्र का एक आकार के साथ एक कतरन मुखौटा बनाने के लिए की जरूरत है।परिपत्र क्षेत्र Path.addArc साथ मुखौटा कतरन आकार का?

मैं निम्नलिखित का उपयोग कर एक आकर्षित करने के लिए कर रहा हूँ:

paint.setColor(0x88FF0000); 
paint.setStyle(Style.FILL); 
canvas.drawArc(oval, 0, 30, true, paint); 

मैं एक कतरन पथ के रूप में उपयोग करना चाहते हैं, तो मैं कोशिश की है:

Path path = new Path(); 
path.addArc(oval, 0, 30); 
canvas.clipPath(path, Op.REPLACE); 

हालांकि addArc नहीं है useCenter पैरामीटर तो क्या मैं एक क्षेत्र है, लेकिन एक खंड नहीं है।

उत्तर

12

ठीक है, ऐसा लगता है कि वहाँ एक कतरन मुखौटा का उपयोग कर ऐसा करने के लिए कोई उचित तरीका है।

हालांकि PorterDuffXfermode का उपयोग करने का एक वैकल्पिक तरीका है। ApiDemos में Xfermodes देखें।

मैं DST_OUT ऑपरेटर के साथ अपनी छवि पर drawArc का उपयोग करके एक क्षेत्र खींचता हूं। इस क्षेत्र के अंतर्गत आने वाले अदृश्य छवि के हिस्से में आता है (तैयार नहीं)।

paint = new Paint(Paint.ANTI_ALIAS_FLAG); 
paint.setColor(0xFFFFFFFF); 
paint.setStyle(Style.FILL); 
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT)); 

canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); 
drawable.draw(canvas); 
canvas.drawArc(oval, 30, 90, true, paint); 
2

मैं एंड्रॉयड डोनट चार्ट में पाइ चार्ट बारी करने के लिए AChartEngine पुस्तकालय बदलाव करने की जरूरत है। क्रम में कतरन उपयोग करने के लिए सक्षम होने के लिए पथ वर्ग का उपयोग करके

canvas.drawArc(oval, startAngle, sweepAngle, useCenter, paint); 

: मैं निम्नलिखित को बदलने के लिए की जरूरत है। निम्नलिखित कोड मेरे लिए काम किया है:

Path path = new Path(); 
path.moveTo(oval.centerX(), oval.centerY()); 
path.addArc(oval, startAngle, sweepAngle); 
path.lineTo(oval.centerX(), oval.centerY()); 
canvas.drawPath(path, paint); 

मुझे आशा है कि यह लोगों को अपने आप के रूप में कैनवास एपीआई से परिचित नहीं करने के लिए कुछ सिर दर्द की बचत होती है।

संबंधित मुद्दे