Frage

Ich habe ein Problem macht ein erneutes beträchtliches Rechteck meine Bilder für das Zuschneiden. Ich versuche, etwas wie dieses Bild zu erreichen:

http://img192.imageshack.us/img192/8930/customcropbox.jpg

Nun, das einzige Problem ist, ich habe keine Ahnung, wo tatsächlich zu starten. Ich brauche ein paar Ratschläge, wie ich diesen Effekt von Zuschneiden erreichen kann. Welche Unterlagen sollte ich lesen Sie auf? Core Graphics oder Quartz 2D? Beide? Ich habe es die Release-Termin für das iPhone wurde Codierung da, aber ich habe eigentlich nie Core-Grafik verwendet und usw. Jede Hilfe oder Ratschläge wäre sehr geschätzt. Ich werde meinen Code werfen hier, wie ich zu zeigen, Fortschritte wie es gemacht wird, wenn ich es erreichen. :-) Auch dieser rechteckige Kasten ist über den Bildschirm in einem UIImageView beweglich, die es noch interessanter macht einfach. Danke für die Hilfe und ich freuen uns darauf, dieses Ziel zu erreichen.

War es hilfreich?

Lösung

Lesezeichen meines Frage , die genau das gleiche ist.

Ich habe so weit bewegt meine Zuschneiden Ansicht um und nachdem er den Teil des Bildes zeigen, richtig, aber mit dem Scroll Zoomen Umgang ist ein work in progress. derzeit habe ich einen Imageview und schlicht UIView in der UIScrollView geschichtet, dann außerhalb des Scrollview und auf einer höheren Ebene ist meine individuelles Zuschneiden UIView. Ich implementieren die Berührungen Methoden befassen sich mit ihm um ziehen, und auch drawRect:

- (void)drawRect:(CGRect)rect {
    // Drawing code
    if( self.image == nil )
        return;

    CGPoint offset = scrollView.contentOffset;
    clipRect = CGRectOffset(self.frame, offset.x, offset.y);

    UIImage *croppedImage = [image croppedImage:clipRect];
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    [croppedImage drawAtPoint:CGPointMake(0, 0)];
}

Hinweis: meine Zuschneiden Ansicht ist kein Nachkomme von UIImageView, es ist nur UIView mit einem Verweis auf das darunter liegende Bild von der anderen Ansicht

.

"croppedImage" ist eine Kategorie auf UIImage und ziemlich einfach:

@implementation UIImage (Resize)
- (UIImage *)croppedImage:(CGRect)bounds {
    CGImageRef imageRef = CGImageCreateWithImageInRect([self CGImage], bounds);
    UIImage *croppedImage = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);
    return croppedImage;
}
...
@end

Ich habe ein paar der UIScrollViewDelegate Methoden implementiert und durch Aktivität Scrollen, damit ich meine Zuschneiden Ansicht synchron halten. Zooming entlang zu übergeben, aber wie bereits erwähnt, noch nicht wie gewünscht funktioniert.

Ein weiterer Hinweis: Ich glaube nicht, es notwendig ist, um die Zeit zu verschwenden eine neue UIImage mit dem beschnittenen Bereich Erzeugung jedes Mal, als das gleiche möglich sein sollte mit

CGImageRef imageRef = CGImageCreateWithImageInRect([yourImage CGImage], bounds);
and 
CGContextDrawImage(ctx, clipRect, imageRef);

Andere Tipps

Quartz ist der ‚Marketing-Begriff‘ für Core Graphics, und das ist, wo soll man anfangen. Sie wollen eine UIView (full custom in -drawRect Zeichnung verwenden :), Trap und seine Berührungen zu verfolgen, und dann das Ergebnis zu ziehen. Sie können den aktuellen Grafikkontext mit UIGraphicsGetCurrentContext get (). Das sollte genug sein, um loszulegen!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top