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

코어 그래픽스(Core Graphics) 1

by 인생여희 2023. 3. 3.

 애플의 코어 그래픽스(Core Graphics)는 아이폰과 아이패드에서 2차원 그래픽을 그릴 수 있도록 제공하는 그래픽 라이브러리입니다.

 애플의 코어 그래픽스(Core Graphics)는 애플이 제공하는 '쿼츠(Quartz)'라는 그래픽 라이브러리 안에 포함되어 있습니다.

 쿼츠(Quartz) 그래픽 라이브러리는 하나의 라이브러리가 아니라 애플의 코어 그래픽(Core Grapic) 코어 애니메이션(Core Animation)으로 구성되어 있다.

 

class ViewController: UIViewController {

    @IBOutlet weak var imgView: UIImageView!
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    //MARK: 선
    @IBAction func drawLineAction(_ sender: UIButton) {
        
        print("선그리기")
        
        //그림을 그리기 위한 콘텍스트 생성
        UIGraphicsBeginImageContext(imgView.frame.size)
        
        // 생성된 콘텍스트 정보 획득
        let context = UIGraphicsGetCurrentContext()!
        
        //선 굵기 2.0
        context.setLineWidth(2.0)
        
        //선 색깔 - 빨간색
        context.setStrokeColor(UIColor.red.cgColor)
        
        //(시작위치)-커서 위치를 50,50으로 이동
        context.move(to: CGPoint(x: 50, y: 50))
        
        //시작위치에서 250, 250 까지 선 추가
        context.addLine(to: CGPoint(x: 250, y: 250))
            
        // 추가한 선을 콘텍스트에 그리기
        context.strokePath()
        
        
        
        print("삼각형 그리기")
        // 선 굵기 4.0
        context.setLineWidth(4.0)
        // 선색깔 - 파란색
        context.setStrokeColor(UIColor.blue.cgColor)
        
        context.move(to: CGPoint(x: 150, y: 200))
        context.addLine(to: CGPoint(x: 250, y: 350))
        context.addLine(to: CGPoint(x: 50, y: 350))
        context.addLine(to: CGPoint(x: 150, y: 200))
        context.strokePath()
        
        // 현재 콘텍스트에 그려진 이미지를 가지고 와서 이미지 뷰에 할당
        imgView.image = UIGraphicsGetImageFromCurrentImageContext()
        
        // 그림 그리기를 끝냄
        UIGraphicsEndImageContext()
        
    }
    
    
    //MARK: 사각형
    @IBAction func drawRectAction(_ sender: UIButton) {
        
        UIGraphicsBeginImageContext(imgView.frame.size)
        let context = UIGraphicsGetCurrentContext()!
        
        //굵기와 색깔
        context.setLineWidth(2.0)
        context.setStrokeColor(UIColor.brown.cgColor)
        
        context.addRect(CGRect(x: 50, y: 100, width: 200, height: 200))
        context.strokePath()
        
        imgView.image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsGetCurrentContext()
    }
    
    //MARK: 원
    @IBAction func drawCircleAction(_ sender: UIButton) {
            
        UIGraphicsBeginImageContext(imgView.frame.size)
        let context = UIGraphicsGetCurrentContext()!
        
        context.setLineWidth(2.0)
        context.setStrokeColor(UIColor.black.cgColor)
        
        // 50, 50 위치에 가로 200, 세로 100 타원 추가
        context.addEllipse(in: CGRect(x: 50, y: 50, width: 200, height: 100))
        context.strokePath()
        
        
        context.setLineWidth(3.0)
        context.setStrokeColor(UIColor.brown.cgColor)
        context.addEllipse(in: CGRect(x: 200, y: 200, width: 300, height: 300))
        context.strokePath()
        
        imgView.image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        
    }
    
    //MARK: 호
    @IBAction func drawAcrAction(_ sender: UIButton) {
        
        UIGraphicsBeginImageContext(imgView.frame.size)
        let context = UIGraphicsGetCurrentContext()!
        
        context.setLineWidth(3.4)
        context.setStrokeColor(UIColor.brown.cgColor)
        
        ///호 그리기
        context.move(to: CGPoint(x: 50, y: 50))
        context.addArc(tangent1End: CGPoint(x: 200, y: 50), tangent2End: CGPoint(x: 200, y: 60), radius: CGFloat(100))
        context.addLine(to: CGPoint(x: 200, y: 200))
        
        
        ///호 그리기
        context.move(to: CGPoint(x: 100, y: 250))
        context.addArc(tangent1End: CGPoint(x: 250, y: 250), tangent2End: CGPoint(x: 100, y: 400), radius: CGFloat(20))
        
        context.strokePath()
        
        imgView.image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
    }
    
    
    //MARK: 채우기
    @IBAction func fillAction(_ sender: UIButton) {
        
        
        UIGraphicsBeginImageContext(imgView.frame.size)
        let context = UIGraphicsGetCurrentContext()!
        
        context.setLineWidth(1.0)
        context.setStrokeColor(UIColor.black.cgColor)
        context.setFillColor(UIColor.brown.cgColor)
        
        let circle = CGRect(x: 50, y: 200, width: 200, height: 200)
        context.addEllipse(in: circle)
        
        //타원 채우기
        context.fillEllipse(in: circle)
        context.strokePath()
        
        imgView.image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        
    }
    
}