Hallo den MacOS-Entwicklern!
Ich benütze einen NSView mit backinglayer um sich ändernde Bilder zu zeichnen. Das geht eigentlich super gut und schnell. Nur fehlt mir der konkrete Zeitpunkt an dem das Zeichnen eines Bildes fertig ist damit ich danach den Inhalt des Bildes sicher bearbeiten kann ohne dass man es gleich sieht. Die Bilder werden von einem anderen Thread bearbeitet, weshalb das Timing unabdingbar ist. Der nächstliegende Zeitpunkt zum draw, den ich abgreifen kann ist das updateLayer. Doch das ist immer noch ein klein wenig VOR dem eigentlichen Zeichenvorgang, sodass ich derzeit ein ein sleep mit ein paar microsecs dazugeben muss damit ich den Inhalt des Bildes ändern kann ohne, dass es sich noch im Zeichenvorgang befindet. Unschöner gehts kaum.
Ich suche also soetwas ähnliches wie ein didDraw. Alle Versuche mit CALayerDelegate oder Subklassen des Layers haben bislang keinen Erfolg gebracht, weil die entsprechenden Funktionen nicht aufgerufen werden.
Weiß vielleicht von euch jemand wie man sich in den Zeichenvorgang reinhängt ? Wenn man keinen Layer benützt dann wäre das ein drawRect. Wird beim backinglayer aber nicht aufgerufen. Oder gibts eine andere Funktion von der man weiß, dass sie direkt NACH einem draw des Layers aufgerufen wird ?
Freue mich über jeden Hinweis.
Danke und Gruß
Thomas
Ich benütze einen NSView mit backinglayer um sich ändernde Bilder zu zeichnen. Das geht eigentlich super gut und schnell. Nur fehlt mir der konkrete Zeitpunkt an dem das Zeichnen eines Bildes fertig ist damit ich danach den Inhalt des Bildes sicher bearbeiten kann ohne dass man es gleich sieht. Die Bilder werden von einem anderen Thread bearbeitet, weshalb das Timing unabdingbar ist. Der nächstliegende Zeitpunkt zum draw, den ich abgreifen kann ist das updateLayer. Doch das ist immer noch ein klein wenig VOR dem eigentlichen Zeichenvorgang, sodass ich derzeit ein ein sleep mit ein paar microsecs dazugeben muss damit ich den Inhalt des Bildes ändern kann ohne, dass es sich noch im Zeichenvorgang befindet. Unschöner gehts kaum.
Ich suche also soetwas ähnliches wie ein didDraw. Alle Versuche mit CALayerDelegate oder Subklassen des Layers haben bislang keinen Erfolg gebracht, weil die entsprechenden Funktionen nicht aufgerufen werden.
Weiß vielleicht von euch jemand wie man sich in den Zeichenvorgang reinhängt ? Wenn man keinen Layer benützt dann wäre das ein drawRect. Wird beim backinglayer aber nicht aufgerufen. Oder gibts eine andere Funktion von der man weiß, dass sie direkt NACH einem draw des Layers aufgerufen wird ?
Freue mich über jeden Hinweis.
Danke und Gruß
Thomas