yswddd
2010-12-27 12:30
浏览 371

android 如何截取一个扇形的区域

项目需要我要截取一张图片的扇形区域,这个扇形也有可能是圆形,需要写在onDraw(Canvas canvas)函数里,因为这个扇形会随着拖动变化的,如何实现啊,请教大侠

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • Horry_Q 2010-12-28 09:55
    已采纳

    下面的代码不知道合不合你的意…
    可以在 Canvas 中剪出一个扇形。
    [code="java"]
    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);
    }
    [/code]

    打赏 评论
  • andyzhchy99 2010-12-27 15:23

    具体的代码实现不能提供给你,但是可以参考设置壁纸时截取sd卡中的图片的时候的方式

    打赏 评论
  • 纠结的木棉花 2011-01-10 10:28

    楼上正确~~~

    打赏 评论

相关推荐 更多相似问题