功能:繪製圖形 圖形上下文的做用: 保存繪圖信息、繪圖狀態.net
自定義UI控件的步驟 新建一個類,繼承自UIView 實現- (void)drawRect:(CGRect)rect方法,而後在這個方法中,能夠: 取得跟當前view相關聯的圖形上下文繼承
1),得到圖形上下文 CGContextRef ctx = UIGraphicsGetCurrentContext();ip
2),拼接路徑(下面代碼是搞一條線段) CGContextMoveToPoint(ctx, 10, 10); CGContextAddLineToPoint(ctx, 100, 100);get
3),繪製路徑 CGContextStrokePath(ctx); // CGContextFillPath(ctx);渲染
新建一個起點 void CGContextMoveToPoint(CGContextRef c, CGFloat x, CGFloat y) 添加新的線段到某個點 void CGContextAddLineToPoint(CGContextRef c, CGFloat x, CGFloat y) 添加一個矩形 void CGContextAddRect(CGContextRef c, CGRect rect) 添加一個橢圓 void CGContextAddEllipseInRect(CGContextRef context, CGRect rect) 添加一個圓弧 void CGContextAddArc(CGContextRef c, CGFloat x, CGFloat y, CGFloat radius, CGFloat startAngle, CGFloat endAngle, int clockwise)方法
代碼:新建的類.m中 -(void)drawRect:(CGRect)rect { 調用方法 [self drawRect]; [self drawTraniagle]; [self drawRectangle]; [self addArc]; }di
//繪製線 -(void)drawRect { //獲取上下文 CGContextRef context=UIGraphicsGetCurrentContext(); //設置起點 CGContextMoveToPoint(context, 20, 20); //設置終點 CGContextAddLineToPoint(context, 100, 100); //設置顏色 [[UIColor redColor] set]; //設置寬度 CGContextSetLineWidth(context, 5); //顯示,渲染 CGContextStrokePath(context); //設置起點 CGContextMoveToPoint(context, 20, 20); //設置終點 CGContextAddRect(context, CGRectMake(40, 120, 50, 50)); CGContextStrokePath(context); } //三角 -(void)drawTraniagle { CGContextRef context=UIGraphicsGetCurrentContext(); 起點 CGContextMoveToPoint(context, self.frame.size.width/2, 20); CGContextAddLineToPoint(context, self.frame.size.width/2, 100); CGContextAddLineToPoint(context, self.frame.size.width/2+50, 100); 閉合線段 CGContextClosePath(context);view
[[UIColor orangeColor] set]; // CGContextStrokePath(context);渲染vi
[[UIColor yellowColor] setFill]; // CGContextFillPath(context);填充 渲染,填充 CGContextDrawPath(context, kCGPathFillStroke); // CGContextDrawPath(context, kCGPathFill); // CGContextDrawPath(context, kCGPathEOFill);co
}
//矩形,多邊 -(void)drawRectangle { CGContextRef context=UIGraphicsGetCurrentContext(); CGContextMoveToPoint(context, self.frame.size.width/2, 120); CGContextAddLineToPoint(context, self.frame.size.width/2, 150); CGContextAddLineToPoint(context, self.frame.size.width/2+50, 180); CGContextAddLineToPoint(context, self.frame.size.width/2+100, 100); CGContextClosePath(context);
[[UIColor orangeColor] set]; CGContextStrokePath(context); } //五環 -(void)addArc { CGContextRef context=UIGraphicsGetCurrentContext(); CGContextAddArc(context, 50, 300, 40, 0, 2 * M_PI, 0); [[UIColor blueColor] set]; CGContextStrokePath(context);
CGContextRef contextI=UIGraphicsGetCurrentContext(); CGContextAddArc(contextI, 150, 300, 40, 0, 2 * M_PI, 0); [[UIColor blackColor] set]; CGContextStrokePath(contextI);
CGContextRef contextII=UIGraphicsGetCurrentContext(); CGContextAddArc(contextII, 250, 300, 40, 0, 2 * M_PI, 0); [[UIColor redColor] set]; CGContextStrokePath(contextII);
CGContextRef contextIII=UIGraphicsGetCurrentContext(); CGContextAddArc(contextIII, 100, 350, 40, 0, 2 * M_PI, 0); [[UIColor yellowColor] set]; CGContextStrokePath(contextIII);
CGContextRef contextV=UIGraphicsGetCurrentContext(); CGContextAddArc(contextV, 200, 350, 40, 0, 2 * M_PI, 0); [[UIColor greenColor] set]; CGContextStrokePath(contextV); } @end