问题描述
项目需要我要截取一张图片的扇形区域,这个扇形也有可能是圆形,需要写在onDraw(Canvas canvas)函数里,因为这个扇形会随着拖动变化的,如何实现啊,请教大侠
解决方案
下面的代码不知道合不合你的意…可以在 Canvas 中剪出一个扇形。public void getSector(Canvas canvas, float radius, double fromDegree, double toDegree, Op op) { canvas.translate(radius, radius); Path pathCircle = new Path(); pathCircle.addCircle(0, 0, radius, Direction.CCW); Path pathTriangle = new Path(); pathTriangle.moveTo(0, 0); float vYFrom = (float) (Math.sin(fromDegree * Math.PI / 180) * 2 * radius); float vYTo = (float) (Math.sin(toDegree * Math.PI / 180) * 2 * radius); float vYCenter = (float) (Math.sin(((toDegree + fromDegree) / 2) * Math.PI / 180) * 2 * radius); float vXFrom = (float) (Math.cos(fromDegree * Math.PI / 180) * 2 * radius); float vXTo = (float) (Math.cos(toDegree * Math.PI / 180) * 2 * radius); float vXCenter = (float) (Math.sin(((toDegree + fromDegree) / 2) * Math.PI / 180) * 2 * radius); pathTriangle.lineTo(vXFrom, vYFrom); pathTriangle.lineTo(vXCenter, vYCenter); pathTriangle.lineTo(vXTo, vYTo); pathTriangle.close(); canvas.clipPath(pathCircle); canvas.clipPath(pathTriangle, op); }
解决方案二:
楼上正确~~~
解决方案三:
具体的代码实现不能提供给你,但是可以参考设置壁纸时截取sd卡中的图片的时候的方式