0

我看过这个 WWDC 会议及其示例项目:https ://developer.apple.com/documentation/pencilkit/inspecting_modifying_and_constructing_pencilkit_drawings

但是,当我尝试在我的绘图画布上绘制 CGPoints 时,什么也没有出现。

这是我的设置:

var points: [CGPoint] = []
(500...1000).forEach { x in
    (500...1000).forEach { y in
        points.append(CGPoint(x: x, y: y))
    }
}
let strokePoints = points.map {
    PKStrokePoint(location: $0, timeOffset: 0, size: CGSize(uniform: 1), opacity: 2, force: 1, azimuth: 1, altitude: 1)
}
let strokePath = PKStrokePath(controlPoints: strokePoints, creationDate: Date())
let stroke = PKStroke(ink: PKInk(.pen, color: .systemGreen), path: strokePath)
canvasView.drawing = PKDrawing(strokes: [ stroke ])
4

1 回答 1

0

我认为问题出在我的笔画大小上。这将起作用:

PKStrokePoint(location: point, timeOffset: 0, size: CGSize(uniform: 3), opacity: 1, force: 0, azimuth: 0, altitude: 0)

请注意,它必须至少为 3。如果为 1,则为不可见,如果为 2,则为半透明。这似乎与屏幕的比例(我的 iPad Pro 的UIScreen.main.scale = 2.0)无关,所以我只是将其硬编码为 3,以表示单个像素。


为了达到这个结果,我用铅笔在屏幕上画了一个像素并记录了它的内容,它显示了这些参数:

▿ PencilKit.PKStrokePoint
  - strokePoint: <PKStrokePoint: 0x600001ad8f60 location={445, 333.5} timeOffset=0.000000 size={3.084399938583374, 3.084399938583374} opacity=0.999985 azimuth=-3.141593 force=0.000000 altitude=1.570796> #0
    - super: NSObject

因此,我使用了这些值(大小、不透明度、方位角、力和高度),并认为除了大小和不透明度之外,这些都无关紧要。这就是为什么我在我的代码中将它们全部设置为零值的原因。

于 2021-12-08T11:35:33.403 回答