Hướng dẫn flag trong c++
Chào bạn đến với Fx Studio. Hôm nay là ngày 2/9, ngày quốc khánh của Việt Nam. Thì để kỷ niệm ngày quốc khánh, mình sẽ hướng dẫn bạn vẽ quốc kỳ Việt Nam bằng ngôn ngữ lập trình Swift với Playground.
Chuẩn bịChúng ta sẽ thực hiện đơn giản và trên Playground để thao tác trực quan. Sau đây là thông số phiên bản mình sử dụng:
1. Hiển thị View trên PlaygroundPlayground là công cụ tuyệt với cho các bạn học Swift. Nó hỗ trợ nhiều và nhanh, bạn có thể thấy giá trị biến, các vòng lặp và kết quả hiển thị bên cạnh. Tuy nhiên, đó là code và trên console. Còn với UI thì như thế nào. Trước tiên, chúng ta cần phải thêm một số cài đặt để có thể hiển thị một UIView lên trên Playground. import UIKit import PlaygroundSupport Chúng ta thêm 2 thư viện trên vào. Với UIKit thì khá quen thuộc với bạn rồi. Còn PlaygroundSupport sẽ giúp bạn hiển thị một view .Tiếp tục chúng ta tạo 1 sub-class kế thừa từ UIView. Đặt tên là class StarView: UIView { override init(frame: CGRect) { super.init(frame: frame) backgroundColor = .red } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } }0 là màu đỏ. class StarView: UIView { override init(frame: CGRect) { super.init(frame: frame) backgroundColor = .red } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } } Giờ sang phần tạo đối tượng của StarView và đưa chúng hiển thị lên nào. let view = StarView(frame: CGRect(x: 0, y: 0, width: 600, height: 300)) PlaygroundPage.current.liveView = view PlaygroundPage.current.needsIndefiniteExecution = true Đối tượng view thuộc class StarView với class StarView: UIView { override init(frame: CGRect) { super.init(frame: frame) backgroundColor = .red } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } }2 được truyền vào. Sử dụng class StarView: UIView { override init(frame: CGRect) { super.init(frame: frame) backgroundColor = .red } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } }3 và xét class StarView: UIView { override init(frame: CGRect) { super.init(frame: frame) backgroundColor = .red } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } }4 chính là đối tượng view vừa tạo. Bạn bấm thực thi và cảm nhận kết quả nào.2. VẽVề phần vẽ, nếu bạn nào chưa biết các Custom UIView bằng phương pháp Drawing thì có thể xem lại bài viết sau:
Trong bài demo này, mình sẽ sử dụng phương pháp vẽ với class StarView: UIView { override init(frame: CGRect) { super.init(frame: frame) backgroundColor = .red } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } }6 và class StarView: UIView { override init(frame: CGRect) { super.init(frame: frame) backgroundColor = .red } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } }7 2.1. Tạo PathTrước khi tạo path thì cần xem qua The flag of Viet Nam là như thế nào.
Vì chủ đạo là 1 ngôi sao 5 cánh. Do đó, việc cần thiết là phải tạo 1 Path là 1 Polygon, gồm nhiều đường thẳng nối tiếp nhau tạo thành 1 hình đa giác. override func draw(_ rect: CGRect) { //create path let path = UIBezierPath() let xCenter: CGFloat = rect.size.width/2 let yCenter: CGFloat = rect.size.height/2 let w = CGFloat(rect.height/2) let r = w / 2.0 let flip: CGFloat = -1.0 let polySide = CGFloat(5) let theta = 2.0*Double.pi*Double(2.0/polySide) path.move(to: CGPoint(x: xCenter, y: r*flip+yCenter)) for i in 1.. |