2009-09-03 4 views
9

Ich versuche, die Farben einer vorhandenen UIView schnell zu invertieren (in ein Negativ zu verwandeln, wie in einem fotografischen Negativ). Oder nehmen Sie die Farben und reduzieren Sie die Sättigung. Ich denke, einfacher als die Bitmap zu manipulieren ist, eine andere UIView zu nehmen, die ganz weiß ist (oder Schatten) und Mischmodi zu verwenden, um meine Ziele zu erreichen.Einfachste/schnellste Möglichkeit, einen Mischmodus zwischen zwei UIViews anzuwenden

Ich sehe keinen Weg, um zu steuern, wie eine UIView übereinander gezeichnet wird. Auch wenn ich UIView von der Unterklasse abkopple, sehe ich keine einfache Möglichkeit mehr, mit einer Mischung mehr zu zeichnen. Es sieht so aus, als müsste ich UIImageView mit einem DrawRect ableiten: withBlendMode.

Hat jemand das einfacher gemacht? Ich hatte gehofft, ich könnte nur eine blendmode -Eigenschaft auf einem UIView oder UIImageView und nicht Unterklasse ...

Grundsätzlich, wie würden Sie schnell eine Ansicht invertieren, so dass schwarz weiß und weiß ist schwarz?

+0

Hallo @Mahboudz, hast du einen besseren Weg gefunden? oder benutzt du immer noch diesen Weg? Vielen Dank! –

Antwort

7

Dies scheint die Lösung zu sein:

Crate eine Unterklasse von UIView. Dann in 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(....); 

Ich bin dran, dies jetzt auszuprobieren.

+5

Und hat das tatsächlich funktioniert? Ich weiß, dass es überall gepostet wird, aber funktioniert es? –