【发布时间】:2023-04-08 16:04:02
【问题描述】:
试图访问Canvas 上的像素数据,我想几乎就在那里?但我错过了一些细节?这可以编译,但 cgContext.data 似乎没有设置为我可以在此处提取的值?
line 变量指的是已发布的点数组。
class Lines:ObservableObject {
@Published var coordinates:[CGPoint] = []
}
struct ContentView: View {
@ObservedObject var line = Lines()
@GestureState var foo = CGPoint.zero
var body: some View {
ZStack(alignment: .center) {
Color.yellow
.opacity(0.1)
Canvas { context, size in
context.withCGContext { cgContext in
cgContext.setStrokeColor(UIColor.red.cgColor)
cgContext.setLineWidth(12)
if line.coordinates.count > 2 {
cgContext.move(to: line.coordinates[0])
for p in 1..<line.coordinates.count {
cgContext.move(to: line.coordinates[p - 1])
cgContext.addLine(to: line.coordinates[p])
cgContext.drawPath(using: .eoFillStroke)
}
if cgContext.data != nil {
let rawData:UnsafeMutableRawPointer = cgContext.data!
let opaquePtr = OpaquePointer(rawData)
let contextPtr = UnsafeMutablePointer<UInt32>(opaquePtr)
let pixels = UnsafeMutableBufferPointer<UInt32>(start: contextPtr, count: 256 * 256)
print("pixels ",pixels.count)
}
}
}
}
}
}
【问题讨论】:
-
Philip,感谢您抽出宝贵时间尝试回答。遗憾的是,我无法接受您的回复,因为我离答案并不近。
标签: swift canvas swiftui core-graphics