我有一个基本的Cocoa应用,正在尝试捕获NSView的快照(包括子视图)以用作拖动会话中的自定义图像。
我使用NSView.cacheDisplay(in:to:)将快照捕获为NSImage。但是,NSTextView中的文本在结果中看起来模糊/模糊:
我考虑使用cacheDisplay()
作为dataWithPDF()
的替代方法,但这不是一个选择,因为对于更复杂的视图,它花费的时间要长得多(超过0.5秒,这在拖动时会引起明显的延迟) )。
下面是我使用的代码。我愿意征求意见。这可能是某种抗锯齿问题吗?
extension NSView {
func snapshotFromPDF() -> NSImage? {
return NSImage(data:dataWithPDF(inside: bounds))
}
func snapshotByCachingDisplayRect() -> NSImage? {
// NOTE: Using cacheDisplay() and a bitmap image rep is way faster than NSView.dataWithPDF()
guard let rep = bitmapImageRepForCachingDisplay(in: bounds) else { return nil }
cacheDisplay(in: bounds, to: rep)
guard let cgImage = rep.cgImage else { return nil }
return NSImage(cgImage: cgImage, size: bounds.size)
}
}