Я пытаюсь нарисовать данные радара поверх карты с помощью CoreGraphics. Раньше я пытался нарисовать каждую точку данных индивидуально, прокладывая путь вокруг каждой отдельной точки данных и затем заполняя соответствующий цвет. Итак, для этого метода мне нужно было иметь 4 точки местоположения и значение данных для каждой точки данных. Выполнение этого способа оказалось слишком дорогостоящим, поскольку для каждого изображения требуется от 30 000 до 80 000 точек данных.
Данные радара хранятся в радиальном формате (360 радиалов, каждый из которых содержит 230 точек данных). Поэтому вместо того, чтобы перебирать каждую точку данных, я перебираю только радиалы. И вместо пути вокруг каждой точки данных у меня есть путь вокруг каждого радиала. Затем я создаю и рисую линейный градиент (CGGradientCreateWithColors), используя массив цветов для этого конкретного градиента.
Этот метод отрисовывает намного быстрее, чем раньше, но он все еще недостаточно быстр. Другой проблемой является «гладкость» данных при увеличении масштаба. Градиент смешивается между каждой точкой данных в радиале, поэтому вы не можете видеть отдельные пиксели. Я не хочу этого делать. Я думаю, что именно здесь мой самый большой удар производительности (вычисление градиента между каждой точкой данных). Я бы предпочел, чтобы каждая точка данных была нарисована отдельным цветом. Это выглядело бы лучше и должно работать лучше.
Есть ли способ предоставить массив цветов для пути (аналогично тому, что я сделал с градиентом), который будет рисовать их дискретно. Мне нужно уметь рисовать это, не возвращаясь к рисованию отдельных точек данных.
Заранее спасибо, Росс
РЕДАКТИРОВАТЬ
Первое изображение - это оригинальный способ, которым я рисовал (рисовал каждую точку данных отдельно). Вот так я хочу, чтобы все выглядело в итоге.
Второе изображение - это градиент, который более эффективен, чем раньше (хотя и недостаточно эффективен), но выглядит неправильно.