2009-09-03 7 views
9

J'essaie d'inverser rapidement les couleurs d'un UIView existant (se transformer en négatif, comme dans un négatif photographique). Ou pour prendre les couleurs et baisser la saturation. Je pense que la manipulation de l'image bitmap est plus facile que de prendre un autre UIView qui est tout blanc (ou nuances), et d'utiliser des blendmodes pour atteindre mes objectifs.Façon la plus simple/la plus rapide d'appliquer un mode de fusion entre deux UIViews

Je ne vois pas comment diriger un UIView au-dessus d'un autre. Même si je sous-classe UIView, je ne vois pas un moyen facile de dessiner en utilisant un mélange plus. Il semblerait que je devrais sous-classer UIImageView qui a un drawrect: withBlendMode.

Est-ce que quelqu'un a fait cela plus facilement? J'espérais que je pourrais simplement définir une propriété blendmode sur un UIView ou UIImageView et ne pas avoir à sous-classer ...

Fondamentalement, comment inverseriez-vous rapidement une vue pour que le noir soit blanc et que le blanc soit noir?

+0

Salut @mahboudz, avez-vous trouvé une meilleure façon de le faire? ou vous utilisez toujours de cette façon? Merci! –

Répondre

7

Cela semble être la solution:

Crate une sous-classe de UIView. Puis dans drawRect:

    [self.image drawInRect:rect]; 

    // prepare the context to draw into 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    // set the blend mode 
    CGContextSetBlendMode(context, kCGBlendModeDifference); 

    // now draw the appropriate color over the whole thing 
    CGContextFillRect(....); 

Je pars à l'essayer maintenant.

+5

Et cela a-t-il réellement fonctionné? Je sais que c'est posté partout, mais ça marche? –

Questions connexes