我的K線圖學習之路(iOS)
阿新 • • 發佈:2019-01-23
#pragma mark 畫一根K線 -(void)drawKWithContext:(CGContextRef)context height:(CGPoint)heightPoint Low:(CGPoint)lowPoint open:(CGPoint)openPoint close:(CGPoint)closePoint width:(CGFloat)width{ CGContextSetShouldAntialias(context, NO); // 首先判斷是綠的還是紅的,根據開盤價和收盤價的座標來計算 BOOL isKong = NO; UIColor *color = [UIColor colorWithHexString:@"#FF0000" withAlpha:1];// 設定預設紅色 // 如果開盤價座標在收盤價座標上方 則為綠色 即空 if (openPoint.y<closePoint.y) { isKong = YES; color = [UIColor colorWithHexString:@"#00FFFF" withAlpha:1];// 設定為綠色 } // 設定顏色 CGContextSetStrokeColorWithColor(context, [color CGColor]); // 首先畫一個垂直的線包含上影線和下影線 // 定義兩個點 畫兩點連線 CGContextSetLineWidth(context, KLineWidth); const CGPoint points[] = {heightPoint,lowPoint}; CGContextStrokeLineSegments(context, points, 2); // 繪製線段(預設不繪製端點) // 再畫中間的實體 CGFloat halfWidth = 0; // 糾正實體的中心點為當前座標 openPoint = CGPointMake(openPoint.x-halfWidth, openPoint.y); closePoint = CGPointMake(closePoint.x-halfWidth, closePoint.y); // 開始畫實體 CGContextSetLineWidth(context, width); // 改變線的寬度 const CGPoint point[] = {openPoint,closePoint}; CGContextStrokeLineSegments(context, point, 2); // 繪製線段(預設不繪製端點) // CGContextSetLineCap(context, kCGLineCapSquare) ;// 設定線段的端點形狀,方形 //開盤價格和收盤價格一樣,畫一條橫線 if ((openPoint.y-closePoint.y<=1) && (closePoint.y-openPoint.y<=1) ) { //這裡設定開盤價和收盤價一樣時候的顏色 CGContextSetStrokeColorWithColor(context, [color CGColor]); CGPoint pointLeft = CGPointMake(openPoint.x-KCandleWidth/2, openPoint.y); CGPoint pointRight = CGPointMake(openPoint.x+KCandleWidth/2, openPoint.y); CGContextSetLineWidth(context, 1); // 改變線的寬度 const CGPoint point[] = {pointLeft,pointRight}; CGContextStrokeLineSegments(context, point, 2); // 繪製線段(預設不繪製端點) } }