这两天因为项目有个地方需要用到扇形的剪裁区
在网上找相关资料
找到一个方法,但是用起来确实错的,而且不能随意的指定圆心的很纵坐标
我查相关Api和看ApiDemo发现有画扇形的方法
但是关于剪裁的没有剪裁扇形的方法
有一个剪裁弧形的方法,
addArc(RectF oval, float startAngle, float sweepAngle)
Add the specified arc to the path as a new contour.
第一个参数是你弧形的画的矩形范围,就是你的圆弧画满后是内切的
第二个参数是起始的角度
第三个参数是移动的度数 ,所以终点度数是第二个参数加上第三个参数
效果如下图
我们需要的是个扇形,所以要加上一个从圆形到圆边起始点再到圆边终点的三角形 的剪裁区拼成一个剪裁区
就是三个点相连的路径
用Path里面的moveTo和linkTo方法便可以完成
我写了一个方法 传入圆心坐标和半径 加上起始和终点角度 代码如下:
/**
* 返回一个扇形的剪裁区
* @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);
}
效果图如下:
分享到:
相关推荐
android 扇形菜单(属性动画实现)
android 饼形图 扇形图统计 简单实现自定义viwe 动画绘制扇形图形 android 饼形图 扇形图统计 简单实现自定义viwe 动画绘制扇形图形
安卓Android源码——PathButton(扇形旋转菜单).zip
Android画圆、画矩形、写字、椭圆、扇形
Android扇形进度条的实现,随着进度的增加,扇形的面积越来越大
Android 点击一个圆上的不同的扇形产生不同的事件
android 源码学习
目前Path风格的菜单已经很普遍了。这个demo不同于path,是一个真实的扇形的菜单,有扇形的打开关闭效果,也可以对每个扇区添加点击事件,不过是个半成品,没有弄成可配置属性的。
以动画的方式显示各个扇形区域,以直线的方式间隔各个扇形区域,可点击放大缩小
博客地址:http://www.cnblogs.com/ityizhainan/p/6306748.html
一个圆均分四部分根据坐标判断点击区域,功能很简答 看代码就可以
C#绘制图形,绘制一个扇形C#绘制图形,
实现扇形的按钮,区分按钮有背景图片区域和无背景图片区域
安卓判断某个点是否在扇形或者区域内,系统自带判断,效率高
扇形布局上加入扇形按钮, 实行了按钮点击事件, 按钮按照圆圈排布
android 扇形菜单Demo(可直接打包运行)、可直接使用,很经典的ui,本人花大量的时间整理好的,在项目中也用过,5分真的很值!
将几个按钮控件做出扇形动画效果,点击进行展开和收起
源码参考,欢迎下载
提供 android 折现图、图形图,扇形图,渐变图等常用报表 ui,功能强大,一个报表一个类,代码十分简单,易修改易维护,绘制性能高效,库没有导入其他的第三方包,干净整洁。
一个android库,用于在android中实现ticketview,具有普通、圆形和扇形角。