У меня есть изображение в градациях серого, которое я хочу использовать для рисования элементов управления Cocoa. Изображение имеет различные уровни серого. Где это самое мрачное, я хочу, чтобы он нарисовал указанный оттенок темного цвета. Я хочу, чтобы он был прозрачным, где исходное изображение белого.
В принципе, я хочу воспроизвести поведение tintColor, наблюдаемое в UINavigationBar на iPhone.
До сих пор я изучил несколько вариантов:
-
Нарисуйте цвет оттенка над полутоновым изображением, используя композицию SourceOver - > Для этого требуется непрозрачный оттенок цвета - > Результат получается намного темнее, чем хотелось бы
-
Используйте CIFultiplyCompositing CIFilter, чтобы направить изображение - > Я не могу [CIImage drawAtPoint: fromRect: operation: fraction:] рисовать только часть изображения. То же самое отлично работает с NSImage - > Я получаю случайные сбои, которые я не могу понять
-
Преобразуйте изображение в оттенках серого в маску. То есть Черный должен быть непрозрачным. Белый должен быть прозрачным. Серый должен иметь промежуточные значения альфа. - > Это, казалось бы, лучшее решение - > Попробуйте, как я мог, я не могу этого добиться.