博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
译:用iPhone SDK来画饼图(Pie Charts)报表
阅读量:6196 次
发布时间:2019-06-21

本文共 2209 字,大约阅读时间需要 7 分钟。

以下类文件可帮我们用UIKit和QuartzCore框架来绘制向量图形。类似这个饼图(Pie Charts)。

// GraphView.h #import 
@interface GraphView:UIView {
} @end
// GraphView.m #import "GraphView.h" #define PI 3.14159265358979323846 static inline float radians(double degrees) { return degrees * PI / 180; } @implementation GraphView - (void)drawRect : (CGRect)rect {
CGRect parentViewBounds = self.bounds; CGFloat x = CGRectGetWidth(parentViewBounds) / 2; CGFloat y = CGRectGetHeight(parentViewBounds) * 0.55; // 获得图形上下文,然后清除之 CGContextRef ctx = UIGraphicsGetCurrentContext(); CGContextClearRect(ctx, rect); // 定义笔触颜色 CGContextSetRGBStrokeColor(ctx, 1, 1, 1, 1.0); // 定义线宽 CGContextSetLineWidth(ctx, 4.0); // 绘制饼图的一些必要值 double snapshotCapacity = 20; double rawCapacity = 100; double systemCapacity = 1; int offset = 5; double pie1_start = 315.0; double pie1_finish = snapshotCapacity * 360.0 / rawCapacity; double system_finish = systemCapacity * 360.0 / rawCapacity; CGContextSetFillColor(ctx, CGColorGetComponents([[UIColor greenColor] CGColor])); CGContextMoveToPoint(ctx, x+2*offset, y); CGContextAddArc(ctx, x+2*offset, y, 100, radians(snapshot_start), radians(snapshot_start+snapshot_finish), 0); CGContextClosePath(ctx); CGContextFillPath(ctx); // system capacity CGContextSetFillColor(ctx, CGColorGetComponents([[UIColor colorWithRed:15 green:165/255 blue:0 alpha:1] CGColor])); CGContextMoveToPoint(ctx, x+offset, y); CGContextAddArc(ctx, x+offset, y, 100, radians(snapshot_start+snapshot_finish+offset), radians(snapshot_start+snapshot_finish+system_finish), 0); CGContextClosePath(ctx); CGContextFillPath(ctx); // data capacity CGContextSetFillColor(ctx, CGColorGetComponents([[UIColor colorWithRed:99/255 green:184/255 blue:255/255 alpha:1] CGColor])); CGContextMoveToPoint(ctx, x, y); CGContextAddArc(ctx, x, y, 100, radians(snapshot_start+snapshot_finish+system_finish+offset), radians(snapshot_start), 0); CGContextClosePath(ctx); CGContextFillPath(ctx); }

代码中类似snapshot_start等变量值要在程序中设定好!!。

调用示例:

GraphView *graph = [[GraphView alloc] initWithFrame:CGRectMake(0.0, 20.0, 320.0, 460.0)]; [window addSubview:graph];

转载地址:http://bbyca.baihongyu.com/

你可能感兴趣的文章
addedbytes.com 制作的速查表欣赏
查看>>
程序员好难...
查看>>
WPF下载远程文件,并显示进度条和百分比
查看>>
实现app上对csdn的文章查看,以及文章中图片的保存 (制作csdn app 完结篇)
查看>>
excel使用技巧
查看>>
Flymeos插桩适配教程
查看>>
Ubuntu 14.04下单节点Ceph安装(by quqi99)
查看>>
[Python] Handle Exceptions to prevent crashes in Python
查看>>
Linux鸟哥(总)
查看>>
Rhino and Envjs
查看>>
ibatis - sqlMapConfig.xml配置文件详解
查看>>
从Zend Engine 2.0的设计蓝图(草稿)看PHP的将来
查看>>
【HeadFirst 设计模式学习笔记】5 单例模式
查看>>
Head First 设计模式 (五) 单件模式(Singleton pattern) C++实现
查看>>
Aspose.Pdf for Java 4.0 发布
查看>>
C语言初学者代码中的常见错误与瑕疵(14)
查看>>
已知ip地址和其子网掩码如何求网络号子网号主机号
查看>>
ruby之各种概念
查看>>
iPhone取消软件更新上边的1
查看>>
多表连接的三种方式详解 hash join、merge join、 nested loop
查看>>