如何从canvas获取数据?

问题描述 投票:0回答:0

我正在将

MaLiang
包与 SwiftUI 一起使用:


struct ContentView: View {
    
    var body: some View {
       DrawingEngine(isPencil: $isApplePencil, isPrint: $isPrint, canvasData: $canvasData)
           .frame(width: proxy.size.width - 100, height: proxy.size.height - 100)
           .cornerRadius(15)
    }
    
}

struct DrawingEngine: UIViewRepresentable {
    @Binding var isPencil: Bool
    @Binding var isPrint: Bool
    @Binding var canvasData: Data
    
    let canvas = Canvas(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
    
    func makeUIView(context: Context) -> some UIView {
        
        canvas.setup()
        
        //let image = UIImage(named: "pencil")
        //let data = image?.pngData() ?? Data()
        
        let pencil = try? canvas.registerBrush()
        pencil?.forceSensitive = 0.5
        pencil?.use()
        
        if isPencil {
            canvas.isPencilMode = true
        }
        
        return canvas
    }
    
    func updateUIView(_ uiView: UIViewType, context: Context) {
        
        if isPrint {
            print()
            
            isPrint = false
        }
        
    }
    
    func print() {
        do {
            let data = canvas.data.elements
            let encode = JSONEncoder()
            canvasData = try encode.encode(data)
            
        } catch{
            Swift.print(error)
        }
    }
}

如何打印画布上的数据?我打算将其存储到 SwiftData 中,但是当我尝试这样做时,这就是我得到的:

调用实例方法“getValue”时没有完全匹配

调用实例方法“setValue”时没有完全匹配

使用此代码:

@Model
class Drawing {
    var id: Int
    var name: String
    var drawing: CanvasData

    init(id: Int, name: String, drawing: CanvasData) {
        self.id = id
        self.name = name
        self.drawing = drawing
    }
}

这非常令人沮丧,因为我找不到任何文档来指导我?

swift core-graphics
© www.soinside.com 2019 - 2024. All rights reserved.