yswddd 2010-12-27 12:30
浏览 402
已采纳

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]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题