Накладывание UIImage с цветом?

Я нашел некоторый существующий код в другом приложении, но позже я также нашел этот метод GLib.AppInfo.launch_default_for_uri.

Простой пример:

var file = File.new_for_path (file_path);
if (file.query_exists ()) {
    try {
        AppInfo.launch_default_for_uri (file.get_uri (), null);
    } catch (Error e) {
        warning ("Unable to launch %s", file_path);
    }
}
17
задан Oliver 25 May 2012 в 16:35
поделиться

3 ответа

Вы захотите закрепить контекст на маске изображения и затем заполнить сплошным цветом:

- (void)drawRect:(CGRect)rect
{
    CGRect bounds = [self bounds];
    [[UIColor blackColor] set];
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextClipToMask(context, bounds, [myImage CGImage]);
    CGContextFillRect(context, bounds);
}

Примечание: myImage должна быть переменной экземпляра, содержащей UIImage . Я не уверен, берет ли маска альфа-канал или интенсивность, поэтому попробуйте оба варианта.

31
ответ дан 30 November 2019 в 09:56
поделиться

-set используется для установки цвета последующих операций рисования, которые не включают блиты. Я предлагаю в качестве первого вызова отобразить другой (пустой) UIView поверх вашего UIImageView и установить цвет его фона:

myView.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.5];

Очевидно, вы должны использовать желаемые значения белого и альфа-канала.

0
ответ дан 30 November 2019 в 09:56
поделиться

В дополнение к решению от rpetrich (которое, кстати, великолепно - помогите мне великолепно), вы также можете заменить строку CGContextClipToMask на:

    CGContextSetBlendMode(context, kCGBlendModeSourceIn); //this is the main bit!

Это режим наложения SourceIn, который выполняет свою работу маскировки цвета тем, что находится в GetCurrentContext.

3
ответ дан 30 November 2019 в 09:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: