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

    use the UIKit and Quartz to draw vector graphics.

     n example of the pie charts the code base generates is below (a screenshot):

    iPhone SDK

    And now, for the code:

    GraphView.h

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    #
    #(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);	
    }

    There are some variables such as snapshot_start etc in the code that are missing values, cause I picked this code out of a larger program I am writing.

  • 相关阅读:
    有用的Python模块
    Python中for循环搭配else的陷阱
    MySQL实用操作
    Pycharm常用快捷键
    MySQL基础
    HTML基础
    MySQL基础
    HTTP连接管理
    TCP连接的建立和终止
    TCP数据流
  • 原文地址:https://www.cnblogs.com/KiloNet/p/1807361.html
Copyright © 2011-2022 走看看