7 Stimmen

Zeichnen ausgewählter Bereiche eines UIImage

Ich habe ein UIImage, das ein Bild mit einer ganzen Reihe von kleineren Bildern auf das Bild (im Wesentlichen ein Bildstreifen mit Sprites) enthält. Ich möchte ein einzelnes Sprite auf einen Bereich meiner UIView zu zeichnen.

Ich kann nicht scheinen, um eine Möglichkeit zu finden, zeichnen nur einen Teil der UIImage auf die Ansicht. Gibt es eine Methode, die dies tut?

8voto

Sixten Otto Punkte 14771

Ich denke, Sie suchen vielleicht nach CGImageCreateWithImageInRect() . Sie können eine CGImage von einer UIImage mit dem gleichnamige Eigenschaft .

EDIT: Eine weitere Option, die es 2014 gibt und 2009 noch nicht, ist SpriteKit . Je nachdem, wofür Sie ein Sprite Sheet benötigen, könnte das nützlich sein.

3voto

Rafa de King Punkte 38434

Ich schrieb eine UIImage Kategorie für den Umgang mit Sprite Sheets. Schauen Sie sich das an, es könnte hilfreich sein http://reecon.wordpress.com/2011/11/19/uiimage-sprite-additions-objective-c/

Wie bereits erwähnt, basiert diese Kategorie auf CGImageCreateWithImageInRect() macht aber das Extrahieren von Sprites aus einem einzigen Sprite Sheet weit bequemer y schneller .

Link zur Git-Hub-Seite: https://github.com/r3econ/UIImage-Sprite-Additions

Sie können auch mit Cocoa Pods installieren.

2voto

Brock Woolf Punkte 45353

Ja, das kann man mit Quartz.

Hier gibt es ein Tutorial, das Ihnen zeigt, wie Sie ein UIImage nehmen und einen Teil davon maskieren.

http://iosdevelopertips.com/cocoa/how-to-mask-an-image.html

Hier ist der Code von dieser Seite (falls sie aus irgendeinem Grund ausfällt)

- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {

    CGImageRef maskRef = maskImage.CGImage; 

    CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
        CGImageGetHeight(maskRef),
        CGImageGetBitsPerComponent(maskRef),
        CGImageGetBitsPerPixel(maskRef),
        CGImageGetBytesPerRow(maskRef),
        CGImageGetDataProvider(maskRef), NULL, false);

    CGImageRef masked = CGImageCreateWithMask([image CGImage], mask);
    return [UIImage imageWithCGImage:masked];

}

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