1. 程式人生 > >我的K線圖學習之路(iOS)

我的K線圖學習之路(iOS)

#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);  // 繪製線段(預設不繪製端點)
    }
  
}