2012-05-13 36 views
6

Dairesel sektör şekli olan kırpma maskesi oluşturmam gerekiyor.Dairesel sektör, Path.addArc ile kırpma maskesini şekillendirdi mi?

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

Bir kırpma yolu olarak kullanmak istiyorum, bu yüzden denedim:

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

Ancak addArc yok Aşağıdaki kullanarak çizmek mümkün duyuyorum

useCenter parametresi bu yüzden elde ettiğim bir sektör değil, bir segment.

cevap

12

Tamam, kırpma maskesi kullanarak bunu yapmanın uygun bir yolu yok gibi görünüyor.

Ancak, PorterDuffXfermode'u kullanarak alternatif bir yol vardır. ApiDemos'taki Xfermodes'e bakın.

DST_OUT işleci ile resmimin üzerine drawArc kullanarak bir sektör çiziyorum. Bu, sektör tarafından kapsanan görüntünün bir kısmını görünmez yapar (çizilmez).

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

Pasta grafiğini çörek çizelgesine dönüştürmek için Android için AChartEngine kitaplığını değiştirmem gerekiyordu. Kırpmayı kullanabilmek için Yol sınıfını kullanarak aşağıdakileri değiştirmem gerekiyordu:

. Aşağıdaki kod benim için bir iş yaptı:

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); 

Bu benim gibi Tuval API aşina olmayan insanlar için bazı baş ağrılarına kaydeder umuyoruz.