Ich habe eine Sammlung von Objekten, die einen Bildnamen, seine Größe und seine X/Y-Position beschreiben. Die Sammlung ist nach "Ebenen" sortiert, so dass ich die Bilder in einer Art Maler-Algorithmus zusammensetzen kann.Wie mehrere NSImages zu einem großen Bild zusammengesetzt werden?
Daraus kann ich das Rechteck bestimmen notwendig, alle Bilder zu halten, so dass jetzt, was ich tun möchte, ist:
- eine Art Puffer Erstellen Sie das Ergebnis (der NS-Äquivalent zu halten, was iPhoneOS ruft UIGraphicsContext auf.)
- Zeichnen Sie alle Bilder in den Puffer.
- Snag einen neuen NSUmage aus dem Composite-Ergebnis des Puffers.
In iPhoneOS, das ist der Code, der das tut, was ich will:
UIGraphicsBeginImageContext (woSize);
CGContextRef ctx = UIGraphicsGetCurrentContext();
[[UIColor clearColor] set];
CGContextFillRect(ctx, NSMakeRect(0, 0, woSize.width, woSize.height));
// draw my various images, here.
// i.e. Various repetitions of [myImage drawAtPoint:somePoint];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Was ich suche ist, wie das in der Desktop-Cocoa/NS zu tun.
Danke!
Docs sagen Veraltet in Snow Leopard. "Wichtig: Wenn Sie neuen Code schreiben oder alten Code aktualisieren, sollten Sie diese Methode vermeiden. Verwenden Sie stattdessen den drawAtPoint: fromRect: operation: fraction: oder drawInRect: fromRect: operation: fraction: Methode zum Zeichnen Das Bild selbst. Obwohl die Methode selbst nicht veraltet ist, wird das Verhalten, das sie bietet, nicht zur allgemeinen Verwendung empfohlen. " Aber ich werde DrawAtPoint versuchen und, wenn es funktioniert, geben Sie das richtige Antwort-Häkchen. (Vielleicht möchten Sie Ihre Antwort bearbeiten.) Vielen Dank! – Olie
Guter Anruf. Bearbeitet. Der Grund, nehme ich an, ist, dass draw die Quelle rect überprüft und composite nicht. Das ist in Ordnung, solange du sicher bist, dass du eine vernünftige Rect passierst (und es ist auch etwas schneller), aber es ist in der Tat sicherer, Draw zu verwenden. – andyvn22
Yeah, lockFocus war das, was mir fehlte (so ein intuitiver Name, ich kann mir nicht vorstellen, WIE ich nicht daran gedacht hätte, die Dokumente dafür zu überprüfen!) Danke! – Olie