zoukankan      html  css  js  c++  java
  • Howto: Drawing Pie Charts using iPhone SDK

    From rajeev karamchedu

    Drawing Pie Charts using iPhone SDK

    Here’s one way to draw a PIE chart using the latest iPhone SDK. There are a ton of tutorials out there that let you get started with the iPhone app development itself and I am by no means any authoritative source on learning how to develop one. Having said that, here’s a class file that will help you use the UIKit and Quartz to draw vector graphics.
    An example of the pie charts the code base generates is below (a screenshot):

    iPhone SDK

    And now, for the code:

    GraphView.h



    #
    #(nothing to see here)
    #
    
    #import <UIKit/UIKit.h>
    #import <Foundation/Foundation.h>
    
    @interface GraphView : UIView {
    
    }
    
    @end

    GraphView.m

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    #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;
    
        // Get the graphics context and clear it
        CGContextRef ctx = UIGraphicsGetCurrentContext();
        CGContextClearRect(ctx, rect);
    
    	// define stroke color
    	CGContextSetRGBStrokeColor(ctx, 1, 1, 1, 1.0);
    
    	// define line width
    	CGContextSetLineWidth(ctx, 4.0);
    
           // need some values to draw pie charts
    
            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);
    }
  • 相关阅读:
    kernel 于ioctl申请书
    顺时针打印矩阵
    HDU 1557 权利指数 国家压缩 暴力
    从混沌到有序--熵
    分层思想总结
    什么是分层架构模式
    分层设计
    分层设计思想
    软件的生长方式
    设计模式、SOLID原则:组件与联系
  • 原文地址:https://www.cnblogs.com/chen1987lei/p/1821794.html
Copyright © 2011-2022 走看看