Я работаю над приложением для работы с изображениями, которое накладывает радиальный градиент на изображение, загруженное из библиотеки фотографий.
На экране у меня есть ползунок для динамического увеличения / уменьшения радиального градиента. Я обнаружил, что производительность на симуляторе просто отличная, но на iPhone 3G или 3GS он намного медленнее перерисовывается при перемещении слайдера.
В настоящее время я использую CGContextDrawRadialGradient
для рисования. Шаги, которые я выполняю для каждого перерисовки:
- Создание графического контекста:
UIGraphicsBeginImageContext(size)
;
- Создать объект градиента:
CGGradientCreateWithColorComponents
- Нарисуйте изображение (фотография загружена из библиотеки фотографий) в масштабе экрана:
drawInRect
- Установить режим наложения наложения:
CGContextSetBlendMode
- Нарисуйте градиент:
CGContextDrawRadialGradient
- Создать UIimage из UIGraphicsGetImageFromCurrentImageContext ();
UIGraphicsEndImageContext();
- Нарисуйте законченное изображение на экране:
drawInRect
.
Есть ли более быстрый способ рисовать? Возможно, используя OpenGL?
Будем благодарны за любые предложения / примеры кода.
Спасибо.