2010-11-15 41 views
0

J'écris une application ipad que j'ai verrouillé l'orientation en mode paysage pour. Je souhaite avoir un fichier PNG de 100 pixels de haut mais 4 fois plus large que l'écran de l'iPad. Ce que je veux, c'est que cette image d'arrière-plan soit affichée sur l'écran, puis commence automatiquement à en faisant défiler une minuterie. Je me suis assuré que les parties de début et de fin de cette image correspondent. Une fois la fin de l'image atteinte, j'aimerais que le bit de départ apparaisse à nouveau. Cette image doit défiler le long des mouvements d'un pixel ou des sauts plus grands si cela est trop lent.Je dois faire défiler une image d'arrière-plan plus grande que la taille de l'écran et la faire boucler sans fin

Je suis vraiment coincé à la recherche d'un exemple de code qui montrerait comment montrer cela.

Ce n'est pas un jeu que j'écris donc vous ne voulez pas utiliser OpenGL ou quelque chose de fantaisie.

Les exemples que j'ai regardés jusqu'ici ne sont pas exactement ce que je suis après.

Puis-je simplifier et état exactement ce que je suis coincé sur ..

Disons que je charge une image en mémoire est de 1000 pixels de large par 100 en hauteur. Quelqu'un peut-il me montrer quelques lignes de code qui me permettraient de découper un rectangle qui commence à dire 200 pixels sur l'axe des x dans cette image plus grande et est un rectangle lui-même de 100 par 100 pixels.

Comment est-ce que j'ai pu découper ce rectangle et le montrer sur l'écran - la vitesse n'est pas importante comme indiqué précédemment.

Je peux alors travailler moi-même partie de défilement de ce (je l'espère) et nous espérons afficher revenir ici plus tard ..

Je pense le long des lignes des commandes de type CGContext mais malgré regardant des exemples et à Les docs sont encore debout contre un mur de briques. C'est «couper une section rectangulaire» que je trébuche le plus.

Merci.

Toute aide appréciée.

Répondre

0

Divulgation - Je ne suis pas un développeur d'iPhone du tout. Mais, ce que je voudrais faire est de casser l'image en morceaux. (Peut-être 8) Donc, vous finiriez par avoir 8 morceaux de 100px chacun, et la moitié de la largeur de l'écran. Puis, au fur et à mesure que l'image défile, vous pouvez charger chaque image avant son tour pour qu'elle s'affiche. Ainsi, à mesure que les images s'écoulent de l'écran, vous pouvez les remplacer par l'image suivante à afficher de l'autre côté de l'écran.

+0

Salut. J'ai pensé à faire quelque chose de similaire mais je m'inquiétais de la taille des fichiers graphiques. Je pensais juste que coder ce serait plus élégant mais j'ai mordu plus que je ne peux le mâcher. Merci pour votre réponse. –

+0

@Steven, vous êtes les bienvenus. – jjnguy

0

Divulgation - Je ne suis pas un développeur d'iPhone du tout. (Emprunté cette ligne de jjnguy)

Prenez votre image d'arrière-plan et agrandissez-la d'une valeur d'écran, et copiez le début de l'écran dans la nouvelle zone. Maintenant, tout ce que vous avez à faire est de recadrer la partie désirée et de l'afficher - le bouclage a déjà été pris en charge.

+0

J'ai pensé à cela et c'est ce que je veux faire - quelqu'un a eu une idée des commandes spécifiques pour recadrer ou copier une zone rectangulaire sur une image plus grande? –

+0

@Steven, voici quelque chose que j'ai trouvé via Google qui semble être ce dont vous avez besoin: http://www.hive05.com/2008/11/crop-an-image-using-the-iphone-sdk/ –

+0

Merci Mark. Grâce à des commandes googling mentionnées dans votre article lié, j'ai trouvé un autre article ici qui a aidé ma solution finale: –

0

Merci pour votre aide et vos conseils.En fin de compte, j'ai décidé que la façon la plus simple de le faire était ce que Mark Ransom avait suggéré - car cela prend en charge le wraparound.

J'ai utilisé les 4 lignes de code ci-dessous pour découper une section que je voulais 200 pixels de large sur 100 de haut. J'ai ensuite bouclé cette startX variable sur une minuterie. Parfait!

// Our image rectangle is 200 pixels wide by 100 pixels high 
    CGRect selectionRect = CGRectMake(startX, 0.0, 200.0, 100.0); 
    CGImageRef resultImageRef = CGImageCreateWithImageInRect(masterImage.CGImage, selectionRect); 
    UIImage *outputFrame = [[UIImage alloc] initWithCGImage:resultImageRef]; 
    [outputImageViewOutlet setImage:outputFrame]; 

En fin de compte .. il est quelqu'un CGRectMake et CGImageCreateWithImageInRect vouloir faire cela devrait regarder plus loin dans!

Merci à tous. J'espère que cela aide quelqu'un.