Objective-C ios 그래픽의 다양한 선 그리기

5575 단어

IOS 그래픽

//   COLOR1   
//     COLOR1, COLOR2         
#define COLOR1 [UIColor colorWithRed:1.0 green:0.2 blue:0.31 alpha:1.0]
#define COLOR2 [UIColor colorWithRed:0.5 green:0.2 blue:0.51 alpha:1.0]

선 그리기

// drawRect          setNeedsDisplay        
// drawRect                ,     setNeedsDisplay      

- (void)drawRect:(CGRect)rect {
  //           
  CGContextRef context = UIGraphicsGetCurrentContext();

  //        
  [COLOR1 setStroke];

  //        
  CGContextSetLineWidth(context, 2.0);

  //           
  CGContextMoveToPoint(context, 100, 200);

  //       
  CGContextAddLineToPoint(context, 100, 300);

  //         
  CGContextStrokePath(context);

}

직사각형 그리기

//
// setFill               ,   CGContextDrawPath     
- (void) drawCustomRect {
    CGContextRef context = UIGraphicsGetCurrentContext();
    [COLOR2 setFill];
    CGContextSetLineWidth(context, 2.0);

    //          
    CGContextAddRect(context, CGRectMake(100, 400, 100, 200));
    // CGContextStrokePath(context);
    CGContextDrawPath(context, kCGPathFillStroke);
}

삼각형 그리기

CGContextRef context = UIGraphicsGetCurrentContext();
[COLOR2 setFill];
CGContextSetLineWidth(context, 2.0);
//         
CGMutablePathRef pathRef = CGPathCreateMutable();
//         
CGPathMoveToPoint(pathRef, nil, 100, 200);
CGPathAddLineToPoint(pathRef, nil, 200, 300);
CGPathAddLineToPoint(pathRef, nil, 0, 30);
//          
CGContextAddPath(context, pathRef);
//    CGContextStrokePath(context);
//        
CGContextDrawPath(context, kCGPathFillStroke);

임의의 아크 그리기

CGContextRef context = UIGraphicsGetCurrentContext();
[COLOR2 setFill];
CGContextSetLineWidth(context, 2.0);
//         
CGMutablePathRef pathRef = CGPathCreateMutable();
//         
CGPathMoveToPoint(pathRef, nil, 100, 200);
CGContextAddCurveToPath(context, 200, 100, 200, 300, 300, 200);
CGContextAddPath(context, pathRef);
//    CGContextStrokePath(context);
//        
CGContextDrawPath(context, kCGPathFillStroke);

원형 그리기

CGContextRef context = UIGraphicsGetCurrentContext();
[COLOR1 setFill];
CGContextSetLineWidth(context, 2.0);

//          :
// 
// CGContextAddArc(, , , 
// , , , )
// x, y:        
// radius:         
// startAngle:      (0-M_PI*2)
// endangle:      
// clockwise:      ,0     ,1     
//
//             M_PI  
//   CGContextClosePath(content);      

CGContextAddArc(context, 200, 200, 150, 0, M_PI*2, 0);
CGContextAddPath(context, pathRef);
CGContextDrawPath(context, kCGPathFillStroke);

그리는 속성

// CGContextSetLineCap(context, KCGLineCapRound);
//           ,KCGLineCapRound              
//
// CGContextSetLineJoin(context, KCGLineJoinRound);
//                 ,KCGLineJoinRound           
// 

- (void) drawRect:(CGRect) rect {
  CGContextRef context = UIGraphicsGetCurrentContext();
  [COLOR1 setStroke];
  CGContextSetLineWidth(context, 2.0);
  CGContextSetLineCap(context, KCGLineCapRound);
  CGContextSetLineJoin(context, KCGLineJoinRound);
  CGContextMoveToPoint(context, 100, 200);
  CGContextAddLineToPoint(context, 100, 300);
  CGContextStrokePath(context);
}

점선 그리기

//
//

- (void) drawRect:(CGRect) rect {
  CGContextRef context = UIGraphicsGetCurrentContext();
  [COLOR1 setStroke];
  CGContextSetLineWidth(context, 2.0);
  CGFloat length[] = {10, 30, 10};

  //      :context   
  //      :        
  //      :     
  //      :     
  CGContextSetLineDash(context, 0, length, 3);
  CGContextMoveToPoint(context, 100, 200);
  CGContextAddLineToPoint(context, 100, 300);
  CGContextStrokePath(context);
}

UIView drawRect 메서드 호출 기준

  • 단순히 init 방법을 호출하면drawRect 방법의 실행을 촉발하지 않는다
  • 프레임 설정을 통해drawRect 방법의 실행을 촉발할 수 있습니다. 예를 들어 initWithFrame 방법의 초기화는drawRect 실행을 자동으로 촉발합니다
  • setNeedsDisplay 방법을 호출하면drawRect 방법의 실행을 촉발할 수 있다
  • 그림 그리기

    //   
    //   drawRect       
    UIImage *image = [UIImage imageNamed:@"1.png"];
    
    //           
    [image drawAtPoint:CGPointMake(100, 100)];
    
    //              ,     
    [image drawInRect:CGRectMake(100, 100, 300, 600)];
    
    //             ,              
    [image drawAsPatternInRect:CGRectMake(100, 100, 300, 600)];
    

    그림의 재단

    // 
    // AddEllipse                    ,       ,      
    // CGContextClip       
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSaveGState(context);
    CGContextAddEllipseInRect(context, CGRectMake(150, 150, 60, 60));
    CGContextClip(context);
    CGContextFillPath(context);
    UIImage *img = [UIImage imageNamed:@"1.png"];
    [img drawAtPoint:CGPointMake(150, 150)];
    CGContextFillPath(context);
    CGContextRestoreGState(context);
    

    텍스트 로고의 그리기

    //   
    //
    
    NSString *str = @"hello world.";
    // UIImage *img = [UIImage imageNamed:@"1.png"];
    // [img drawAtPoint:CGPointMake(100, 100)];
    
    //      log  ,                   
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy];
    paragraphStyle.lineBreakMode = NSLineBreakByClipping;
    
    NSDictionary *dic = @{NSFontAttributeName:[UIFont systemFontOfSize:10.0],
                         NSParagraphStyleAttributeName:paragraphStyle,
                          NSForgroundColorAttributeName:[UIColor greenColor]};
    //         
    [str drawInRect:CGRectMake(100, 100, 100, 10) withAttributes:dic];
    

    좋은 웹페이지 즐겨찾기