【发布时间】:2016-12-22 23:10:52
【问题描述】:
我正在使用标准 Cocoa 绘图 API 在 NSView 上绘制图形。见下图。在滚动视图中的 NSView 上有多个图形。每个图表都有大约 1440 个数据点,并且由于正在进行重绘,滚动性能会有些困难。
有没有什么办法可以保证图形只绘制一次,这样图片就可以流畅的上下滚动了?
此视图用于生成 PDF 输出文件。
除非调整视图大小,否则绘图实际上不需要更改,并且不会发生这种情况,是否有任何方法可以防止视图在滚动期间重绘自身。希望有一个简单的开关来确保视图自己绘制一次并将其保存在内存中!?
基本代码在 NSView 子类 draw() 函数中。
override func draw(_ dirtyRect: NSRect) {
drawAxis()
// Only draw the graph axis during live resize
if self.inLiveResize {
return
}
plot1()
plot2()
plot3()
...
}
func plot1(){
for value in plot1Data {
path = NSBezierPath()
if isFirst {
path?.move(to: value)
} else {
path?.line(to: value)
}
}
}
【问题讨论】: