본문 바로가기
아이폰 개발/ios 개념&튜토리얼

CGContextRef 예제 - 그림 그리기

by 인생여희 2021. 2. 22.

CGContextRef 예제 - 그림 그리기 

 

 

참고로 CGContextRef 는 UIView를 상속받은 클래스에서 사용할 수 있다.

 


#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN

@interface MyView : UIView

@end

NS_ASSUME_NONNULL_END

 

 

#import "MyView.h"

@implementation MyView


- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        NSLog(@"initWithFrame 호출");
    }
    return self;
}



- (instancetype)initWithCoder:(NSCoder *)coder
{
    self = [super initWithCoder:coder];
    if (self) {
        NSLog(@"initWithCoder 호출");
    }
    return self;
}




- (void)drawRect:(CGRect)rect{
    NSLog(@"drawRect 호출");
    
    //1. 객체 생성
    CGContextRef context = UIGraphicsGetCurrentContext();



    //2. 그리기 시작
    CGContextBeginPath(context);



   // 3. 포인트(좌표) 이동 (x,y 좌표값을 설정하는데 다음번에 그리게 되면 이 좌표부터 그리게 된다.)
    CGContextMoveToPoint(context, 10, 10);

     

    //4. 색상 설정
    CGColorRef color = [UIColor redColor].CGColor;


    //그려야 할 객체 설정
    //4-1. 동그라미 설정
    //CGRect ellipseRect = CGRectMake(0, 0, 100, 100);
    //CGContextAddEllipseInRect(context, ellipseRect);



    //4-2. 라인그리기
    //CGContextMoveToPoint(context, 0, 0);
    CGContextAddLineToPoint(context, 20, 20);
    
    CGContextAddLineToPoint(context, 30, 30);
    //CGContextAddLineToPoint(context, 40, 40);

    //CGContextClosePath(context);
    CGContextSetLineWidth(context, 2.0);


    //5. 색상 채우기
    //5-1. 면 색상 설정
    CGContextSetFillColorWithColor(context, color);

    //5-2. 라인 색상 설정
    CGContextSetStrokeColorWithColor(context, color);


    //6. 그리기 (주석을 참고하여 3개중에 한개만 사용한다.)
    //CGContextDrawPath(context, kCGPathFill);                       //채워서 그리기

    CGContextDrawPath(context, kCGPathStroke);                     //테두리만 그리기
    //CGContextDrawPath(context, kCGPathFillStroke);                 //테두리와 채우기 그리기

}



@end

 

 

 

참고

 

그림그리기

soooprmx.com/archives/tag/cgcontextref

 

기본예제

devhkh.tistory.com/12?category=454750