Core Graphics, gewusst wie: zeichnen Sie ein Rechteck mit einer ellipse Transparenz Loch?
Ich versuche zu zeichnen, 320x480 Rechtecks, das ausgehöhlte durch eine ellipse.
Vorstellen, zeichnen Sie ein gefülltes Rechteck, über das Rechteck eine gefüllte ellipse, und entfernen Sie die ellipse aus dem Rechteck, so dass eine transparente Loch.
- (void)drawRect:(CGRect)rect
{
//Drawing code.
CGContextRef context = UIGraphicsGetCurrentContext();
//Set color to red
CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0);
//Add rectange
CGContextAddRect(context, rect);
//Fill rectange
CGContextFillRect(context, rect);
//Create a elipse to be removed from rectange
CGPathRef circlePath = CGPathCreateMutable();
CGPathAddEllipseInRect(circlePath , NULL , elipseRect);
CGContextAddPath(context, circlePath);
CGContextSetRGBFillColor(context, 1.0, 1.0, 0.0, 1.0);
CGContextFillPath(context);
//clip elipse... (DO NOT WORK)
CGContextEOClip(context);
}
Wenn ich versuche mich zu entfernen, die elipse aus der rectange, funktioniert es nicht.
Jemand eine Lösung hat?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist aus der Spitze von meinem Kopf, aber...
Können Sie wirklich brauchen, zu verwenden
CGContextEOFillPath
kann ich nie halten Sie gerade. DieCGContextClip
-Typ Funktionen verwendet werden soll vor Zeichnung eher als nach, aber Sie sind wahrscheinlich in diesem Fall nicht notwendig.Sagte, Sie sollte nicht tun dies in einer
-drawRect:
Umsetzung, aber der Pfad sollte eigentlichCAShapeLayer
ist eine Unterebene von dieser Ansicht, oder nur eine Ebene oder, in der Tat, eine Schicht, die verwendet wird, anstatt diese Ansicht, wenn möglich.Beachten Sie auch, dass das übergebene Rechteck in
drawRect:
kann nur ein Teil des ganzen-Ansicht, so dass Ihr code haben einige sehr seltsame Ergebnisse, wie Sie ist. Meinst duself.bounds
?