注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

尐鬼じ☆ve伱

和你在一起的日子

 
 
 

日志

 
 

Android中获得一个扇形的剪裁区(转)  

2013-05-17 16:52:20|  分类: Android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
http://webservices.ctocio.com.cn/213/12195213.shtml

有一个剪裁弧形的方法,

  addArc(RectF oval, float startAngle, float sweepAngle)

  Add the specified arc to the path as a new contour.

  第一个参数是你弧形的画的矩形范围,就是你的圆弧画满后是内切的

  第二个参数是起始的角度

  第三个参数是移动的度数 ,所以终点度数是第二个参数加上第三个参数

  效果如下图

  我们需要的是个扇形,所以要加上一个从圆形到圆边起始点再到圆边终点的三角形 的剪裁区拼成一个剪裁区

  就是三个点相连的路径

  用Path里面的moveTo和linkTo方法便可以完成

view plaincopy to clipboardprint? 
  /** 
  * 返回一个扇形的剪裁区 
  * @param canvas //画笔 
  * @param center_X //圆心X坐标 
  * @param center_Y //圆心Y坐标 
  * @param r //半径 
  * @param startAngle //起始角度 
  * @param sweepAngle //终点角度 
  * 
  */ 
  private void getSectorClip(Canvas canvas,float center_X,float center_Y,float r,float startAngle,float sweepAngle) 
  { 
  Path path = new Path(); 
  //下面是获得一个三角形的剪裁区 
  path.moveTo(center_X, center_Y); //圆心 
  path.lineTo((float)(center_X+r*Math.cos(startAngle* Math.PI / 180)), //起始点角度在圆上对应的横坐标 
  (float)(center_Y+r*Math.sin(startAngle* Math.PI / 180))); //起始点角度在圆上对应的纵坐标 
  path.lineTo((float)(center_X+r*Math.cos(sweepAngle* Math.PI / 180)), //终点角度在圆上对应的横坐标 
  (float)(center_Y+r*Math.sin(sweepAngle* Math.PI / 180))); //终点点角度在圆上对应的纵坐标 
  path.close(); 
  // //设置一个正方形,内切圆 
  RectF rectF = new RectF(center_X-r,center_Y-r,center_X+r,center_Y+r); 
  //下面是获得弧形剪裁区的方法 
  path.addArc(rectF, startAngle, sweepAngle - startAngle); 
  canvas.clipPath(path); 
  } 

效果图如下:

  评论这张
 
阅读(210)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017