2013-07-11 2 views
1

Я рисую много аудиометров на вид и обнаруживаю, что drawRect не может идти в ногу со скоростью изменения звука. На практике только очень небольшая часть изображения меняется за один раз, поэтому я действительно хочу только нарисовать дополнительные изменения.Как я могу нарисовать изображение со множеством мелких модификаций?

Я создал CGLayer и при изменении данных я использую CGContextBeginPath, CGContextMoveToPoint, CGContextAddLineToPoint и CGContextStrokePath рисовать в CGLayer.

В drawRect на вид я использую CGContextDrawLayerAtPoint для отображения слоя.

При изменении данных я рисую разницу, рисуя линию сверху в CGLayer. Я предположил, что это похоже на фотошоп, и новые данные просто рисуют старые, но теперь я верю, что все строки, которые я когда-либо рисовал, остаются в этом слое. Это верно?

Если есть способ удалить строки из CGLayer?

ответ

0

Что именно вы подразумеваете под «звуковым счетчиком», показывают некоторые снимки ваших предполагаемых проектов. Показывает нам код ...

Это мой suggestions-

1) Да, новые данные просто рисует поверх CGLayer, если вы не отпустите его CGLayerRelease(layer)

2) CGContextStrokePath является дорогостоящей операцией. Вы можете создать общий штрих линии и сохранить их в UIImage. Затем повторно используйте UIImage каждый раз, когда ваши данные.

3) Простейшее решение: используйте UIProgressView, если вы просто хотите показать уровни звука.

0

Теперь я считаю, что все линии, которые я когда-либо рисовал, остаются в слое. Это верно?

Да.

Если есть способ удаления строк из CGLayer?

Нет. Нет. Вы бы создали новый слой. Как правило, вы создаете слой для многократного рисования.

Ваш чертеж может быть упрощен путем вычерчивания прямоугольников, а не путей.

Для некоторых аудиометров разделение счетчика на несколько частей может помочь (здесь вы можете использовать CGLayer). Аналогично, вы можете просто рисовать прямоугольники выборочно и/или рисовать клип, изображения и/или слои.

 Смежные вопросы

  • Нет связанных вопросов^_^