ich eine UIImageView brauchen maskieren das Bild zu respektieren, die sich in Farbe oder s/w nach einer Flagge ziehen:Wie eine Form auf einem UIImage zu ziehen, während die alpha
BOOL isGrey;
Ich versuche, Zeichnen Sie dazu ein schwarzes Rechteck über dem Originalbild, wobei der Quarz-Mischmodus auf Farbe eingestellt ist. Dies funktioniert, außer dass die Alpha-Maske des Bildes nicht berücksichtigt wird.
Siehe Abbildung: alt text http://img214.imageshack.us/img214/1407/converttogreyscaleillo.png
Google Suche und SO, fand ich und versuchte mehrere Lösungen, aber keine, die Maske entweder respektieren.
Hier ist der Code, der die ‚Was ich‘ Bild oben erzeugt:
- (void)drawRect:(CGRect)rect {
if (isGrey) {
CGContextRef context = UIGraphicsGetCurrentContext();
// flip orientation
CGContextTranslateCTM(context, 0, self.bounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
// draw the image
CGContextDrawImage(context, self.bounds, self.image.CGImage);
// set the blend mode and draw rectangle on top of image
CGContextSetBlendMode(context, kCGBlendModeSaturation);
CGContextSetRGBFillColor(context, 0.0, 0.0, 0.0, 1.0);
CGContextFillRect(context, rect);
} else {
[self.image drawInRect:rect];
}
}
Gibt es eine Quarz-Zeichenmodus, die ich vergessen zu setzen? Ich habe durch den Quarz-Programmierungs-Führer geschaut, aber ist so schwer, das ein bisschen von Information zu extrahieren, die Sie von den überlappenden und hyperverlinkten Themen benötigen.
Offensichtlich suche ich nach einer allgemeinen Lösung, die auf Bilder mit irgendeiner maskierten Form, nicht nur dem gezeigten Kreis zutrifft.
Ausgenommen, dass dies nicht funktioniert, wenn Ihre Ansicht backgroundColor UIColor clearColor ist. –