iPhone 利用CG API画一个饼图(Pie chart)

核心函数是:CGContextAddArc(CGContextRef c, CGFloat x, CGFloat y, CGFloat radius, CGFloat startAngle, CGFloat endAngle, int clockwise)

* CGContextRef: 图形上下文
* x,y: 开始画的坐标
* radius: 半径
* startAngle, endAngle: 开始的弧度,结束的弧度
* clockwise: 画的方向(顺时针,逆时针)

有了这个函数可以画出任意扇形,所以饼图也不再话下.

#define PI 3.14159265358979323846

#define radius 100

static inline float radians(double degrees) {

return degrees * PI / 180;

}

static inline void drawArc(CGContextRef ctx, CGPoint point, float angle_start, float angle_end, UIColor* color) {

CGContextMoveToPoint(ctx, point.x, point.y);

CGContextSetFillColor(ctx, CGColorGetComponents( [color CGColor]));

CGContextAddArc(ctx, point.x, point.y, radius, angle_start, angle_end, 0);

//CGContextClosePath(ctx);

CGContextFillPath(ctx);

}

- (void)drawRect:(CGRect)rect {

CGContextRef ctx = UIGraphicsGetCurrentContext();

CGContextClearRect(ctx, rect);

float angle_start = radians(0.0);

float angle_end = radians(121.0);

drawArc(ctx, self.center, angle_start, angle_end, [UIColor yellowColor]);

angle_start = angle_end;

angle_end = radians(228.0);

drawArc(ctx, self.center, angle_start, angle_end, [UIColor greenColor]);

angle_start = angle_end;

angle_end = radians(260);

drawArc(ctx, self.center, angle_start, angle_end, [UIColor orangeColor]);

angle_start = angle_end;

angle_end = radians(360);

drawArc(ctx, self.center, angle_start, angle_end, [UIColor purpleColor]);

}

时间: 2024-08-02 19:39:37

iPhone 利用CG API画一个饼图(Pie chart)的相关文章

利用反射api查找一个类的详细信息

说到这个实例,首先介绍下本人,我是一个php程序员,从事drupal开发2年多,可以说从实习开始就接触这个,至今没有换过,drupal给我的感觉是俩字"强大",今天写一个views的字段,然后需要继承views的views_handler_field类,还要自己实现里面的一些方法,走一些自己的配置设置,查看这个类的时候,发现实在是太多信息了,并且做了好些继承,于是我就想要是能实现一个功能,传入一个类名,然后就能返回类的所有信息(包括,属性,方法,继承,接口,并且这些类所放置的文件位置,

c# 通过.net自带的chart控件绘制饼图pie chart

c# 通过.net自带的chart控件绘制饼图pie chart 需要实现的目标是: 1.将数据绑定到pie的后台数据中,自动生成饼图. 2.生成的饼图有详细文字的说明. 具体的实现步骤: >>前台界面的设置: 1.设置chart1的属性Legends中默认的Legend1的Enable为false: 2.设置Series的ChartType为Pie 3.设置Series显示的文字内容(此处比较关键) 至此,前台的设置完成. >>下面填写后台代码: List<string&g

利用百度API画多边形,不能监测到百度绘图鼠标事件

var drawingManager = new BMapLib.DrawingManager(map, { isOpen: false, //是否开启绘制模式 enableDrawingTool: true, //是否显示工具栏 drawingToolOptions: { anchor: BMAP_ANCHOR_TOP_RIGHT, //位置 offset: new BMap.Size(5, 5), //偏离值 scale: 0.8, //工具栏缩放比例 //工具栏显示数据 drawingMo

Android饼图Pie Chart

饼图 用的是AChartEngine 需要引用achartengine-1.0.0.jar包.下载地址:http://download.csdn.net/detail/yaohucaizi/5128672. 具体代码如下: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.activity_pie

利用canvas画一个动态时钟

目标:利用canvas画布画一个动态时钟,根据目前的时间可以实时更新的,可以在过程中添加一些效果,比如让时钟外围的一圈颜色渐变,时钟上的数字颜色改变,时钟的指针颜色改变... 设置一个定时器 先放上一张效果图,参考一下 先建一个画布,写好样式 <style type="text/css"> *{ margin: 0; padding: 0; } div{ //设置div的text-align为center,margin-top text-align: center; mar

CSS3画一个滚动的骰子

今天利用CSS3来画一个自动滚动的骰子. 思路:骰子的六个面分别用六个ul标签,每个面的点数就是li标签,点数的排列采用伸缩布局,然后采用定位和transform属性将六个面翻转折叠成立方体. 1.HTML结构:用一个类名为box的大盒子将六个面(ul)包起来,方便给整个骰子定位和添加动画:每个ul里的li代表每个面的点数,其中第四.五.六面每一列的点数分别用一个div包起来 1 <div class="box"> 2 <ul class="one"

10分钟,利用canvas画一个小的loading界面(顺便讨论下绘制效率问题)

首先利用定义下canvas得样式 <canvas width="1024" height="720" id="canvas" style="border: 1px solid #808080;display: block;margin: 100px auto;>你的游览器不支持canvas</canvas> 这里主要要说的就是宽高,不要在style里面定义,不然会被拉伸.(对于这点,建议大家看下W3c文档,不是很

10分钟,利用canvas画一个小的loading界面

首先利用定义下canvas得样式 <canvas width="1024" height="720" id="canvas" style="border: 1px solid #808080;display: block;margin: 100px auto;>你的游览器不支持canvas</canvas> 这里主要要说的就是宽高,不要在style里面定义,不然会被拉伸.(对于这点,建议大家看下W3c文档,不是很

利用zabbix API进行管理

zabbix 现在之所以那么流行,个人感觉跟zabbix 强大的API有一个很大的关系,利用API可以帮我们完成很多事情: 1.获取相关组,主机信息. 2.比如有人喜欢获取历史数据重新出图. 3.添加删除主机,绑定删除模板. 4.添加删除维护周期 这里我使用pipy提供的zabbix_client模块来进行,这样就不用我们自己去写登录函数,只要在模块开始指定用户名密码即可: 1.安装zabbix_client: pip install zabbxi_client 2.API管理脚本,替换成自己用