Swift로 크리스마스 트리를 그려 보았습니다.

19739 단어 iOSAdventCalendarSwift

오래간만의 투고로 Swift 묶음으로 어떤 기사로 할까…



Swift에서 뭔가 크리스마스 같은 것을하고 싶었지만
안이 아무것도 생각하지 않는다. . . .







번쩍! !

옛날, 프랙탈 도형의 나무를 Objective-C로 만든 적이 있기 때문에
그것을 Swift로 만들면 에니야🤔💡

그렇다고 결정되면 흉내 영감을 줄 수있는 코드를 찾는거야! !



전혀 네 느낌의 녀석이 발견되면...

조금 미묘한 나무 모양의 녀석이라면 영감을 줄 수 있습니다.
이렇게 되면 좀 타협하는가? .

도야!

(이것이라면 그냥 프랙탈 그림이야, ,, 세야! 크리스마스처럼 장식하라!)



그래! !

(어쩐지 아직 크리스마스 같지 않아,,,
노란색 일색의 장식이 어색하고, 화려하게 해라! )

드우! !

(대부분의 크리스마스 같지만 아직 뭔가 부족한-,,
크리스마스는 밤의 이미지와 배경은 검은 색! )

하쁭!!!!


또 한 목소리!!!!!


의외로 좋은 느낌! ! www

Merry Christmas의 문자는 프리 소재를 사용해 주셨습니다!
그리기로 그리려고 생각했지만 시간이 없었던 orz (공개 전날에 기사를 쓰고 있습니다.
그리고 나무도 사실 크리스마스 트리 같은 것을 그려보고 싶었지만
시간이 (ry
누군가 더 제대로 된 크리스마스 트리를 25 일까지 그려주세요 (다른 힘 본원

글쎄, 정말 어리석은 느낌이야.
끝까지 봐 주셔서 감사합니다! !
그럼 좋은 크리스마스! !
(선물에 코드를 넣어 갑니다!)

추가



관련 기사에 고사나무를 쓰는 기사가 있었기 때문에
그것을 흉내 영감하고 다시 도전하고 싶다(´;ω;`)www

TreeView.swift

extension CGFloat {
  func degrees_to_radians() -> CGFloat {
    return CGFloat(Double.pi) * self / 180.0
  }
}

extension Double {
  func degrees_to_radians() -> Double {
    return Double(Double.pi) * self / 180.0
  }
}

class TreeView: UIView {

    func drawTree(x1: CGFloat, y1: CGFloat, angle: CGFloat, depth:Int){
        if depth == 0 {
            return
        }

        let ang = angle.degrees_to_radians()
        let x2:CGFloat = x1 + ( cos(ang) as CGFloat) * CGFloat(depth) * (self.frame.width / 60)
        let y2:CGFloat = y1 + ( sin(ang) as CGFloat) * CGFloat(depth) * (self.frame.width / 60)

        let line = self.drawLine(x1: x1, y1: y1, x2: x2, y2: y2)
        line.stroke()

        self.drawTree(x1: x2, y1: y2, angle: angle - 20, depth: depth - 1)
        self.drawTree(x1: x2, y1: y2, angle: angle, depth: depth - 1)
        self.drawTree(x1: x2, y1: y2, angle: angle + 20, depth: depth - 1)

        if depth < 4 && self.randomBool(percent: 5){
            let circle = UIBezierPath(arcCenter: CGPoint(x: x1, y: y1), radius: 3, startAngle: 0, endAngle: CGFloat(Double.pi)*2, clockwise: true)
            UIColor.yellow.setFill()
            circle.fill()
        } else if depth < 4 && self.randomBool(percent: 5) {
            let circle = UIBezierPath(arcCenter: CGPoint(x: x1, y: y1), radius: 3, startAngle: 0, endAngle: CGFloat(Double.pi)*2, clockwise: true)
            UIColor.red.setFill()
            circle.fill()
        } else if depth < 4 && self.randomBool(percent: 5) {
            let circle = UIBezierPath(arcCenter: CGPoint(x: x1, y: y1), radius: 3, startAngle: 0, endAngle: CGFloat(Double.pi)*2, clockwise: true)
            UIColor.blue.setFill()
            circle.fill()
        }
    }

    func drawSnow() {
        let circle = UIBezierPath(arcCenter: CGPoint(x: x1, y: y1), radius: 3, startAngle: 0, endAngle: CGFloat(Double.pi)*2, clockwise: true)
        UIColor.red.setFill()
        circle.fill()

    }

    func drawLine(x1:CGFloat, y1:CGFloat, x2:CGFloat, y2:CGFloat) -> UIBezierPath
    {

        let path = UIBezierPath()
        path.move(to: CGPoint(x: x1,y: y1))
        path.addLine(to: CGPoint(x: x2,y: y2))
        path.lineWidth = 0.5
        return path
    }

    override func draw(_ rect: CGRect) {

        let color = UIColor(red: 0.0, green: 1.0, blue: 0.0, alpha: 1.0)
        color.set()

        self.drawTree(x1: self.frame.width / 2 , y1: self.frame.height * 0.8, angle: -90 , depth: 9 )
    }

    func randomBool(percent: Int) -> Bool {
        return arc4random_uniform(100) < percent
    }    
}


좋은 웹페이지 즐겨찾기