728x90
코어 그래픽스 그림 그리기 App 구현
iOS에서는 코어 그래픽스라는 라이브러리를 사용하여 뷰에 그림을 그릴 수 있는데,
이 곳에서는 사각형, 선, 원과같은 도형이나 색을 채우는 등의 기능을 사용할 수 있습니다.
결과 화면
스토리 보드
ViewController.swift (메인화면)
//
// ViewController.swift
// DrawGraphics
//
// Created by HwangSeungyeon on 2020/09/17.
//
import UIKit
class ViewController: UIViewController {
@IBOutlet var imgView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
//MARK: 선 그리기 함수
@IBAction func btnDrawLine(_ sender: UIButton) {
UIGraphicsBeginImageContext(imgView.frame.size) //콘텍스트를 이미지 뷰의 크기와 같게 생성
let context = UIGraphicsGetCurrentContext()! //생성한 콘텍스트의 정보 가져옵니다
//Draw Line
context.setLineWidth(2.0) //콘텍스트에 대한 여러가지 설정 합니다. , 선굵기
context.setStrokeColor(UIColor.red.cgColor) //선 색상(빨강)
context.move(to: CGPoint(x: 70, y: 50)) //그림 그리기 위해 시작 위치로 커서 이동(0,0)이 화면 왼쪽 위
context.addLine(to: CGPoint(x: 270, y: 250)) //현재 위치에서 지정한 위치까지 선 추가
context.strokePath() //추가한 경로로 콘텍스트에 그립니다
//Draw Triangle
//색상(파랑), 꼭지점 세개 좌표 설정
context.setLineWidth(4.0)
context.setStrokeColor(UIColor.blue.cgColor)
context.move(to: CGPoint(x: 170, y: 200))
context.addLine(to: CGPoint(x: 270, y: 350))
context.addLine(to: CGPoint(x: 70, y: 350))
context.addLine(to: CGPoint(x: 170, y: 200))
context.strokePath()
//현재 콘텍스트에 그려진 이미지 가지고와서 이미지 뷰에 나타낸다
imgView.image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext() //그림 그리기 끝낸다
}
@IBAction func btnDrawRectangle(_ sender: UIButton) {
UIGraphicsBeginImageContext(imgView.frame.size)
let context = UIGraphicsGetCurrentContext()!
//Draw Rectangle
context.setLineWidth(2.0)
context.setStrokeColor(UIColor.red.cgColor)
//xy좌표에서 시작하고 폭 200px 높이 200px 사각형 그린다
context.addRect(CGRect(x: 70, y: 100, width: 200, height: 200))
context.strokePath()
imgView.image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
}
//MARK: 원 그리기 함수
@IBAction func btnDrawCircle(_ sender: UIButton) {
UIGraphicsBeginImageContext(imgView.frame.size)
let context = UIGraphicsGetCurrentContext()!
//Draw Ellipse
context.setLineWidth(2.0)
context.setStrokeColor(UIColor.red.cgColor)
context.addEllipse(in: CGRect(x: 70, y: 50, width: 200, height: 100))
context.strokePath()
//Draw Circle
context.setLineWidth(5.0)
context.setStrokeColor(UIColor.green.cgColor)
context.addEllipse(in: CGRect(x: 70, y: 200, width: 200, height: 200))
context.strokePath()
imgView.image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
}
//MARK: 호 그리기 함수
@IBAction func btnDrawArc(_ sender: UIButton) {
UIGraphicsBeginImageContext(imgView.frame.size)
let context = UIGraphicsGetCurrentContext()!
//Draw Arc
context.setLineWidth(5.0)
context.setStrokeColor(UIColor.red.cgColor)
context.move(to: CGPoint(x: 100, y: 50))
context.addArc(tangent1End: CGPoint(x: 250, y: 50), tangent2End: CGPoint(x: 250, y: 200), radius: CGFloat(50))
context.addLine(to: CGPoint(x: 250, y: 200))
context.move(to: CGPoint(x: 100, y: 250))
context.addArc(tangent1End: CGPoint(x: 270, y: 250), tangent2End: CGPoint(x: 100, y: 400), radius: CGFloat(20))
context.addLine(to: CGPoint(x: 100, y: 400))
context.strokePath()
imgView.image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
}
//MARK: 채우기 함수
@IBAction func btnDrawFill(_ sender: UIButton) {
UIGraphicsBeginImageContext(imgView.frame.size)
let context = UIGraphicsGetCurrentContext()!
//Draw Rectangle
context.setLineWidth(1.0)
context.setStrokeColor(UIColor.red.cgColor)
context.setFillColor(UIColor.red.cgColor) //도형의 내부를 색상으로 채운다
let rectangle = CGRect(x: 70, y: 50, width: 200, height: 100)
context.addRect(rectangle)
context.fill(rectangle) //사각형의 내부를 색상으로 채웁니다
context.strokePath()
//Draw Circle
context.setLineWidth(1.0)
context.setStrokeColor(UIColor.blue.cgColor)
context.setFillColor(UIColor.blue.cgColor)
let circle = CGRect(x: 70, y: 200, width: 200, height: 100)
context.addEllipse(in: circle)
context.fillEllipse(in: circle)
context.strokePath()
//Draw Triangle
context.setLineWidth(1.0)
context.setStrokeColor(UIColor.green.cgColor)
context.setFillColor(UIColor.green.cgColor) //원, 타원의 내부를 색상으로 채운다
context.move(to: CGPoint(x: 170, y: 350))
context.addLine(to: CGPoint(x: 270, y: 450))
context.addLine(to: CGPoint(x: 70, y: 450))
context.addLine(to: CGPoint(x: 170, y: 350))
context.fillPath() //선의 내부를 색상으로 채운다
context.strokePath()
imgView.image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
}
}
전체 코드
출처 : Do it 스위프트로 앱 만들기
728x90
'Mobile Platform > IOS' 카테고리의 다른 글
[IOS] Do it (17) 스와이프 제스처 앱 만들기 (0) | 2020.09.26 |
---|---|
[IOS] Do it (16) 탭과 터치 사용한 스캐치 앱 만들기 (0) | 2020.09.23 |
[IOS] Do it (14) 카메라와 포토 라이브러리 App 구현 (0) | 2020.09.17 |
[IOS] Do it (13) 비디오(Video) 재생 App 구현하기 (0) | 2020.09.16 |
[IOS] Do it (12) 음악 재생 및 녹음 App 구현하기 (0) | 2020.09.15 |