import SwiftUI
public struct Polygon: Shape {
public let sides: Int
public init(sides: Int) { self.sides = sides }
public func path(in rect: CGRect) -> Path {
let diameter = Double(min(rect.size.width, rect.size.height))
let radius = diameter / 2.0
let rad = Double.pi / 180.0
let center = CGPoint(x: rect.size.width / 2.0, y: rect.size.height / 2.0)
return Path { path in
for i in 0 ..< sides {
let angle = Double(i) * (360.0 / Double(sides)) * rad
let a = center.x + CGFloat(sin(angle) * radius)
let b = center.y + CGFloat(cos(angle) * radius)
let point = CGPoint(x: a, y: -b + CGFloat(diameter))
if i == 0 {
path.move(to: point)
} else {
path.addLine(to: point)
}
}
path.closeSubpath()
}
}
}
struct ContentView: View {
@State var sides = 3
var body: some View {
VStack {
Spacer()
Polygon(sides: sides)
.fill(Color.blue)
.frame(width: 200, height: 200)
Spacer()
Stepper("Sides: \(sides)", value: $sides, in: 3...30)
.frame(width: 180)
}
.padding(50)
}
}
ホーム
/
その他 /
ハイライトのテスト。
0 件のコメント:
コメントを投稿