Я хотел бы отобразить спектрограмму в Swift для macOS.При отображении волнового файла или спектра я использую NSBezierPath.Линии не меняют цвет.
В этом случае каждое БПФ будет представлено вертикальной линией, точки которой представляют величину этого БПФ.Я хотел бы дать цвет для каждой точки в зависимости от значения величины, и кажется, что это трудно сделать оптимизированным способом с NSBezierPath.Кто-нибудь может предложить подход для этого?
ОБНОВЛЕНИЕ: вот что я пытаюсь сделать:
func drawChunkFFT(rect: CGRect, spectrum: Array<Float>) {
self.convertToPoints(spectrum: spectrum, samplesPerPixel: 2)
var f = 0
var x = 10
let ctx = NSGraphicsContext.current?.cgContext
ctx!.beginPath();
ctx!.move(to: CGPoint(x:x,y:0))
for _ in readFile.points{
ctx!.move(to: CGPoint(x:ctx!.currentPointOfPath.x,y:ctx!.currentPointOfPath.y))
ctx!.addLine(to: CGPoint(x:x, y:f))
ctx!.setStrokeColor(red: readFile.points[f]/255, green: readFile.points[f]/255, blue: readFile.points[f]/255, alpha: 1.0)
f += 1
}
ctx!.strokePath()
}
Значения:
55.76425552368164 for f 0
54.63053512573242 for f 1
216.34625244140625 for f 2
299.5468444824219 for f 3
71.74128723144531 for f 4
51.18459701538086 for f 5
17.891700744628906 for f 6
15.77481460571289 for f 7
18.720001220703125 for f 8
до f= 255, с уменьшающимися значениями
Я вижу вертикальную линию при x = 10, но все точки имеют одинаковый цвет, в то время как я ожидал уровня серого
Что я делаю не так?