11 Stimmen

Transparenter Hintergrund in CoreGraphics

Ich versuche, einen transparenten Hintergrund in CG zu bekommen, aber es kommt immer schwarz heraus.

Ich habe den folgenden Code:

- (id)initWithFrame:(CGRect)frame {
    if ((self = [super initWithFrame:frame])) {
        DLog(@">>> Alloc: DrawingCanvas [0x%X]", (unsigned int)self);
        [self setOpaque:NO];
        [self setBackgroundColor:[UIColor clearColor]];
    }
    return self;
}

- (void) drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGRect frame = rect;
    int counter = 3;

    CGContextClearRect(context, frame);
    CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
    CGContextFillRect(context, frame);
}

Wie bekomme ich diesen Code dazu, einen transparenten Hintergrund anzuzeigen?

4voto

Anomie Punkte 89467

Mit diesem Setup und solange Sie clearsContextBeforeDrawing nicht auf NEIN setzen, sollte der Hintergrund bereits transparent sein, wenn Ihre drawRect: Methode aufgerufen wird. Entfernen Sie die CGContextClearRect und andere Zeichenaufrufe.

4voto

nverinaud Punkte 1277

Sie könnten einfach diese Zeilen entfernen:

CGContextClearRect(context, frame);
CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
CGContextFillRect(context, frame);

Solange Sie undurchsichtig auf NEIN gesetzt haben und clearColor als Hintergrundfarbe verwenden, sollte alles in Ordnung sein.

Seien Sie vorsichtig beim Zeichnen, da Ihr anderer Zeichencode den Hintergrund vollständig ausfüllen kann (achten Sie auf [path fill] Dinge in einem nicht beschnittenen Kontext).

1voto

inorganik Punkte 22447

Ich hatte das gleiche Problem und die Lösung bestand darin, die Hintergrundfarbe der UIView, in der ich gezeichnet habe, von der Elternklasse der Ansicht festzulegen. Ich brauchte keinen Code, um den Hintergrund in der Klasse der UIView zu löschen, wo die Zeichnung stattfindet.

myDrawingView.backgroundColor = [UIColor clearColor];

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X