Kopieren Sie CGContext in einen anderen CGContext

9

Ich führe einige CG-Zeichenoperationen in einen CGContext aus, den ich für MKMapOverlayView erstellt habe. Nachdem ich in meinen Kontext gezeichnet habe, erstelle ich ein Bild und füge es in den von MapKit bereitgestellten Kontext ein.

%Vor%

Gibt es eine Möglichkeit, myContext einfach in context zu kopieren, ohne ein Bild erstellen zu müssen?

Mir ist klar, dass einige von Ihnen sagen werden, "warum nicht einfach direkt in den Kontext zeichnen, den MapKit bietet". Leider gibt es beim Zeichnen in context einen Zeichenfehler. Apple untersucht derzeit dieses Problem für uns, aber in der Zwischenzeit müssen wir einen Workaround schaffen. Diese Workaround, die ich oben vorgestellt habe, ist meine "beste" Einstellung, aber es ist ein bisschen auf der langsamen Seite.

P.S. Ich habe ein Kopfgeld angefangen, da ich auch hier eine Antwort suche. Speziell ziele ich auf OS X. Also sollte die Antwort dort funktionieren. Das OP suchte nach einer Antwort auf iOS.

    
Tim Reddy 05.08.2011, 15:41
quelle

1 Antwort

1

Sie könnten einen CGLayerRef verwenden. Der Ebenenref ist wie ein Unterkontext, in den Sie mehrere Male zeichnen und dann in den ursprünglichen Kontext abflachen, wenn Sie mit dem Zeichnen des Inhalts der Ebene fertig sind.

Es wird normalerweise verwendet, um viele Zeichenaufrufe und nicht jeden einzelnen Aufruf gemeinsam zu nutzen.

Ich weiß nicht, ob das Problem immer noch behoben werden kann oder ob die Leistung besser oder schlechter als der Zwei-Kontext-Ansatz ist. Ich müsste mehr über Ihre Ziele und Anforderungen wissen. Möchten Sie beispielsweise vermeiden, dass zwei Kontexte verwendet werden, um eine zweite Kopie zu vermeiden, oder weil Sie den Speicher für das zweite Bild nicht bezahlen möchten?

    
Jon Hess 25.05.2016 06:58
quelle