作業-從程式製作國旗圖案-以色列國旗

Chiafishh
海大 SwiftUI iOS / Flutter App 程式設計
13 min readJan 16, 2019

去年寒假去以色列玩,非常喜歡以色列,決定畫以色列國旗!

1.先畫白色的底:

import UIKitvar rect = CGRect(x: 0, y: 0, width: 200, height: 134)let backgroundView = UIView(frame: rect)backgroundView.backgroundColor = UIColor(red: 1, green: 1, blue: 1, alpha: 1)

2.畫上下橫條

//top 長條rect = CGRect(x: 0, y: 10, width: 200, height: 20)let topView = UIView(frame: rect)topView.backgroundColor = UIColor(red: 0.12, green: 0.21, blue: 0.67, alpha: 1)backgroundView.addSubview(topView)//but 長條rect = CGRect(x: 0, y: 104, width: 200, height: 20)let butView = UIView(frame: rect)butView.backgroundColor = UIColor(red: 0.12, green: 0.21, blue: 0.67, alpha: 1)backgroundView.addSubview(butView)

結果:

3.畫藍色大三角形

//藍色大三角形
var triangle1frame = CGRect(x: 72, y: 40, width: 50, height: 46)
let triangle1 = UIView(frame: triangle1frame)triangle1.backgroundColor = UIColor(red: 0.12, green: 0.21, blue: 0.67, alpha: 1)let path1 = UIBezierPath()var point = CGPoint(x: 23, y: 0)path1.move(to: point)point = CGPoint(x: 0, y:46)path1.addLine(to: point)point = CGPoint(x: 50, y:46)path1.addLine(to: point)path1.close()let Layer1 = CAShapeLayer()Layer1.path = path1.cgPathtriangle1.layer.mask = Layer1backgroundView.addSubview(triangle1)

結果:

4.畫白色的三角形,比上面藍色三角形小一點

//白色小三角形
var triangle2frame = CGRect(x: 72, y: 40, width: 50, height: 46)
let triangle2 = UIView(frame: triangle1frame)triangle2.backgroundColor = UIColor(red: 1, green: 1, blue: 1, alpha: 1)let path2 = UIBezierPath()point = CGPoint(x: 23.5, y: 7.5)path2.move(to: point)point = CGPoint(x: 6, y:42)path2.addLine(to: point)point = CGPoint(x: 43, y:42)path2.addLine(to: point)path2.close()let Layer2 = CAShapeLayer()Layer2.path = path2.cgPathtriangle2.layer.mask = Layer2
backgroundView.addSubview(triangle2)

結果:

5.畫藍色橫槓

是第二個三角形(倒三角形)的上方橫條,是四邊形

//畫藍橫槓var frameho = CGRect(x: 72, y: 50, width: 50, height: 46)let hoV = UIView(frame: frameho)hoV.backgroundColor = UIColor(red: 0.12, green: 0.21, blue: 0.67, alpha: 1)let path3 = UIBezierPath()point = CGPoint(x: 0, y: 0)path3.move(to: point)point = CGPoint(x: 49, y:0)path3.addLine(to: point)point = CGPoint(x: 46, y:3)path3.addLine(to: point)point = CGPoint(x: 3, y:3)path3.addLine(to: point)path3.close()let Layer3 = CAShapeLayer()Layer3.path = path3.cgPathhoV.layer.mask = Layer3backgroundView.addSubview(hoV)

結果:

6.畫V型

是第二個三角形(倒三角形)的下方V型,是六邊形

一個點一個點慢慢連起來

//畫藍V型
var framev = CGRect(x: 72, y: 48, width: 50, height: 46)
let vV = UIView(frame: frameho)vV.backgroundColor = UIColor(red: 0.12, green: 0.21, blue: 0.67, alpha: 1)let path4 = UIBezierPath()point = CGPoint(x: 49, y: 0)path3.move(to: point)point = CGPoint(x: 23, y:46)path3.addLine(to: point)point = CGPoint(x: 0, y:0)path3.addLine(to: point)point = CGPoint(x: 5, y:3)path3.addLine(to: point)point = CGPoint(x: 23, y:40)path3.addLine(to: point)point = CGPoint(x: 43, y:3)path3.addLine(to: point)path3.close()let Layer4 = CAShapeLayer()Layer4.path = path3.cgPathvV.layer.mask = Layer4backgroundView.addSubview(vV)

結果:

完成啦!!

最後是~完整程式碼:(有在畫第二個三角形前試位置的code)

import UIKitvar rect = CGRect(x: 0, y: 0, width: 200, height: 134)let backgroundView = UIView(frame: rect)backgroundView.backgroundColor = UIColor(red: 1, green: 1, blue: 1, alpha: 1)//top 長條rect = CGRect(x: 0, y: 10, width: 200, height: 20)let topView = UIView(frame: rect)topView.backgroundColor = UIColor(red: 0.12, green: 0.21, blue: 0.67, alpha: 1)backgroundView.addSubview(topView)//but 長條rect = CGRect(x: 0, y: 104, width: 200, height: 20)let butView = UIView(frame: rect)butView.backgroundColor = UIColor(red: 0.12, green: 0.21, blue: 0.67, alpha: 1)backgroundView.addSubview(butView)//藍色大三角形var triangle1frame = CGRect(x: 72, y: 40, width: 50, height: 46)let triangle1 = UIView(frame: triangle1frame)triangle1.backgroundColor = UIColor(red: 0.12, green: 0.21, blue: 0.67, alpha: 1)let path1 = UIBezierPath()var point = CGPoint(x: 23, y: 0)path1.move(to: point)point = CGPoint(x: 0, y:46)path1.addLine(to: point)point = CGPoint(x: 50, y:46)path1.addLine(to: point)path1.close()let Layer1 = CAShapeLayer()Layer1.path = path1.cgPathtriangle1.layer.mask = Layer1backgroundView.addSubview(triangle1)//白色小三角形var triangle2frame = CGRect(x: 72, y: 40, width: 50, height: 46)let triangle2 = UIView(frame: triangle1frame)triangle2.backgroundColor = UIColor(red: 1, green: 1, blue: 1, alpha: 1)let path2 = UIBezierPath()point = CGPoint(x: 23.5, y: 7.5)path2.move(to: point)point = CGPoint(x: 6, y:42)path2.addLine(to: point)point = CGPoint(x: 43, y:42)path2.addLine(to: point)path2.close()let Layer2 = CAShapeLayer()Layer2.path = path2.cgPathtriangle2.layer.mask = Layer2backgroundView.addSubview(triangle2)//試位置/*var triangle3frame = CGRect(x: 72, y: 50, width: 50, height: 46)let triangle3 = UIView(frame: triangle3frame)triangle3.backgroundColor = UIColor(red: 0.12, green: 0.21, blue: 0.67, alpha: 1)let path3 = UIBezierPath()var point3 = CGPoint(x: 23, y: 46)path3.move(to: point3)point3 = CGPoint(x: 0, y:0)path3.addLine(to: point3)point3 = CGPoint(x: 49, y:0)path3.addLine(to: point3)path3.close()let Layer3 = CAShapeLayer()Layer3.path = path3.cgPathtriangle3.layer.mask = Layer3backgroundView.addSubview(triangle3)*///畫藍橫槓var frameho = CGRect(x: 72, y: 50, width: 50, height: 46)let hoV = UIView(frame: frameho)hoV.backgroundColor = UIColor(red: 0.12, green: 0.21, blue: 0.67, alpha: 1)let path3 = UIBezierPath()point = CGPoint(x: 0, y: 0)path3.move(to: point)point = CGPoint(x: 49, y:0)path3.addLine(to: point)point = CGPoint(x: 46, y:3)path3.addLine(to: point)point = CGPoint(x: 3, y:3)path3.addLine(to: point)path3.close()let Layer3 = CAShapeLayer()Layer3.path = path3.cgPathhoV.layer.mask = Layer3backgroundView.addSubview(hoV)//畫藍V型var framev = CGRect(x: 72, y: 48, width: 50, height: 46)let vV = UIView(frame: frameho)vV.backgroundColor = UIColor(red: 0.12, green: 0.21, blue: 0.67, alpha: 1)let path4 = UIBezierPath()point = CGPoint(x: 49, y: 0)path3.move(to: point)point = CGPoint(x: 23, y:46)path3.addLine(to: point)point = CGPoint(x: 0, y:0)path3.addLine(to: point)point = CGPoint(x: 5, y:3)path3.addLine(to: point)point = CGPoint(x: 23, y:40)path3.addLine(to: point)point = CGPoint(x: 43, y:3)path3.addLine(to: point)path3.close()let Layer4 = CAShapeLayer()Layer4.path = path3.cgPathvV.layer.mask = Layer4backgroundView.addSubview(vV)

--

--