Question

Je vais avoir une difficulté à faire un rectangle de redimensionnable pour les cultures mes images. Je suis en train de réaliser quelque chose comme cette image:

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

Eh bien, le seul problème est que je n'ai aucune idée où commencer réellement. J'ai besoin des conseils sur la façon dont je peux obtenir cet effet de culture. Quels documents dois-je lire sur? Core Graphics ou Quartz 2D? Tous les deux? J'ai été le codage pour l'iPhone car il est la date de sortie, mais je ne l'ai jamais utilisé réellement graphiques de base et etc. Toute aide ou des conseils serait très apprécié. Je jette mon code ici que je progresse pour montrer comment faire quand je y arriver. :-) En outre, cette boîte rectangulaire est mobile à travers l'écran dans un UIImageView ce qui rend juste plus intéressant. Merci pour l'aide et je me réjouis de la réalisation de cet objectif.

Était-ce utile?

La solution

question qui est exactement le même.

Je suis aussi loin que le déplacement autour de mon point de vue cultural et l'avoir correctement montrent la partie de l'image, mais face à la zooming scrollview est un travail en cours. actuellement j'ai un imageview et UIView plaine en couches dans le UIScrollView, puis à l'extérieur de la scrollview et à un niveau supérieur est mon UIView de culture personnalisée. Je mets en œuvre les méthodes de petites touches pour faire face à glisser autour, et aussi 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)];
}

Note:. Mon point de vue cultural est pas un descendant de UIImageView, il est juste UIView avec une référence à l'image sous-jacente de l'autre point de vue

"croppedImage" est une catégorie sur UIImage et assez simple:

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

J'ai mis quelques-unes des méthodes de UIScrollViewDelegate et passer par l'activité de défilement, je peux garder mon point de vue cultural en synchronisation. Zooming est passé le long aussi, mais comme mentionné, ne fonctionne pas encore souhaité.

Une autre note: Je ne pense pas qu'il est nécessaire de perdre du temps à générer une nouvelle UIImage avec la zone recadrée chaque fois que la même chose devrait être possible avec

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

Autres conseils

Le quartz est le « terme de marketing » pour Core Graphics, et c'est là, vous devriez commencer. Vous aurez envie d'utiliser un UIView (dessin complet personnalisé dans -drawRect :), piège et de suivre ses touches, puis tirer le résultat. Vous pouvez obtenir le contexte actuel graphique à l'aide UIGraphicsGetCurrentContext (). Cela devrait être suffisant pour vous aider à démarrer!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top