# inserer un bout d'image dans une image



## jb_jb_fr (19 Mars 2007)

Bonjour à tous.

Je tente de faire une chose que je ne maitrise pas vraiment.

J'ai une image de type TIFF que j'affiche dans une fenêtre dans laquel j'ai mis un style NSImageView.

Jusque la je n'ai pas de soucis. Je fais 
NSImage *toto = [[NSImage alloc] imageNamed:"image"];
[imageView setImage:toto];

Mais maintenant, je voudrais prendre un morceau d'une autre image, que je colle dans l'image toto.
Comment je fais.
J'ai beau regardé les class NSImage, NSImagePrep, NSImageView, je n'arrive pas a voir :
- Comment prendre une zone dans une image
- Comment coller une image dans une image.
est-ce que les la method drawInRect peut me servir? J'ai l'impression que ca affiche un truc à l'écran, mais n'en suis pas sur.

Merci pour votre aide.

Jacques


----------



## claw59 (19 Mars 2007)

Désolé pour les imperfections mais je ne maîtrise pas encore entièrement le sujet ! :

MAIS

quant il s'agit d'associer ou de faire intérargir des parties graphiques sur un controle, il faut utiliser les objets 'NSCell' qui sont inscrits dans les objets COcoa comme 'NSButton'. (ie: NSButtonCell).

pour moduler dynamiquement des effets graphiques en fonction d'évènement, il vaut mieux gérer les images par 'CoreImage' (donc une NSImage est le résultat d'un CIImage fabriqué par un CIFilter) . de cette manière, on peut imaginer qu'après avoir cliquer sur un bouton, un contrôle imageVIew effectue une transition CoreImage pour passer d'une image à une autre.


----------



## ntx (19 Mars 2007)

Dans NSImage, les fonctions compositeToPoint.


----------



## jb_jb_fr (19 Mars 2007)

Houla j'ai pas tout compris  et je ne suis pas sur d'avoir été compris
Voila un petit dessin de ce que je veux faire








Avec NSCell, j'ai pas vu comment prendre un morceau d'image.
Je veux juste changer une partie d'image et pas toute l'image
De plus avec les methodes compositeToPoint, comment specifier l'image source (Image_B dans mon exemple)?
Dans mon idée, je voulais :
1) Charger l'image B
2) Creer une image C de la taille de la zone B
3) Copier dans cette nouvelle image C la zone B voulue
4) Coller dans l'image A, la nouvelle image C au coordonée x,y

- Les méthodes compositeToPoint ne renvoie pas de résultat (void)
- Dans la class NSCell j'ai pas vu comment copier une zone.
- Dans la class NSCell, j'ai pas vu comment spécifier une zone.

Ou alors :
- Je ne m'y prends pas du tout de la bonne manière (ce qui est tres fortement probable)
- Je n'ai rien compris à NSImage
- Je n'ai rien compris à NSCell 

Pourriez vous être un peu plus précis dans vos explications.

Jacques


----------



## ntx (19 Mars 2007)

N'hésite pas à fouiller dans les exemples de code fournis par Apple. Il y a par exemple ceci.


----------



## jb_jb_fr (19 Mars 2007)

ntx a dit:


> N'hésite pas à fouiller dans les exemples de code fournis par Apple. Il y a par exemple ceci.



Et bien. Ca à l'air d'etre ce que je veux faire.
Mais bon sang que ca me semble compliqué

Je vais essayer cela ce soir.
Merci pour le tuyau.

Jacques


----------



## ntx (20 Mars 2007)

J'avoue que j'ai aussi trouv&#233; la d&#233;marche pour y arriver un peu tordue, mais on s'y fait. 
Surtout ne pas oublier le lock/unlock sinon &#231;a ne marchera pas.


----------



## jb_jb_fr (20 Mars 2007)

MERCI ntx 

J'ai essayer hier soir et ça marche du feu de Dieu.
Exactement ce que je voulais faire.



ntx a dit:


> J'avoue que j'ai aussi trouvé la démarche pour y arriver un peu tordue, mais on s'y fait.
> Surtout ne pas oublier le lock/unlock sinon ça ne marchera pas.



Oui, c'est ce truc de lock/unlock aussi qui m'a dérouté.
Comme tu dis, une fois que l'on a compris le truc, c'est génial.

Merci beaucoup. 
Je vais pouvoir continuer mon programme 

Jacques


----------

