Application de peinture sur l'iPhone
Ma123
Membre
Salut,
J'ai besoin de développer une application de peinture dans l'iPhone.
Je veux peindre une image en cliquant sur une couleur et, si je clique dans une partie d'une image, la partie serait rempli de la couleur particulière.
Quelqu'un peut-il me proposer la solution?
J'ai besoin de développer une application de peinture dans l'iPhone.
Je veux peindre une image en cliquant sur une couleur et, si je clique dans une partie d'une image, la partie serait rempli de la couleur particulière.
Quelqu'un peut-il me proposer la solution?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Plus sérieusement, s'agit-til d'une image bitmap ou vectorielle ? La réponse sera très différente (le 2nd cas est bien plus simple).
EDIT : le jpg c'est le mal pour un travail graphique précis ! Le png c'est mieux.
Peux-tu nous montrer une image d'exemple ?
Uniquement pour simplifier les explications, je considère que les traits sont noirs sur fond blanc:
- ouvrir l'image dans une bitmap (CGBitmapContext)
- déterminer les coordonnées du point du toucher
- convertir ces coordonnées en coordonnées dans la bitmap
- à partir de ce point, remplir avec la couleur choisie tous les pixels blancs jusqu'à rencontrer des pixels noirs. Core Graphics n'a pas de fonction pour ça à ma connaissance. Il va donc falloir accéder directement aux pixels en tapant dans mémoire (pointeurs et autres joies).
Le problème, c'est que si les traits noirs sont lissés (anti-aliasés), ce qui est nécessaire pour que ça fasse propre, le remplissage n'ira pas jusqu'au bord: on verra un filet blanc disgracieux. Une méthode peut être de remplir deux pixels plus loin, puis utiliser l'image de départ pour redessiner par dessus... j'ai dit que ce n'était pas simple pour une image bitmap ?
Merci pour votre explication
Je cherche un exemple (code source) pour commencer mon projet.
Merci d'avance
oui dans ce style
Merci de faire attention où vous postez vos questions, c'est la moindre des règles à respecter
(On passe de plus en plus de temps à modérer et déplacer les sujets ces derniers temps ça devient lassant)
aidez moi d'avoir un petit code source qui facilite un peut mon tache.
C'est pas un petit code source que tu veux, mais toute l'application!
En effet, tout ce qui est touché et tracé, c'est la partie la plus difficile à gérer pour ce genre d'application.
Demande plutôt des pistes sur les tracés par exemple, plutôt qu'un code source, pour savoir où chercher dans la doc. ;-)
je cherche un tutorial ,un exemple qui facilite ma tache.
je cherche un tutorial ,un exemple qui facilite ma tache.
je cherche un tutorial ,un exemple qui facilite ma tache.
http://www.invasivecode.com/blog/archives/date/2010/08
@Draken
pour le moment je cherche a faire un coloriage a partir le doigt.
Lance Xcode et crée une application avec le template "View-Based Application", et donne-lui le nom UneArdoise. Xcode génère 4 fichiers dont les principaux pour toi sont UneArdoiseViewController.h et UneArdoiseViewController.m. C'est là que tu vas créer le système de dessin.
Pour commencer tu as besoin d'une image-guide pour dessiner. A titre d'exemple, j'ai "emprunté" une image d'une application de coloriage. Attention c'est une infraction au droit d'auteur. J'ai honte de l'avoir fait, mais je n'avais pas le temps de préparer autre chose. A ne pas utiliser pour ton projet !
C'est une image png de 320x480 pixels.
Théoriquement, il faut passer par IBuilder pour créer ce contrôle. Je n'aime pas cette approche, préférant tout faire par le code. Pour moi la manière la plus simple pour créer le contrôle est de passer par la méthode viewDidLoad du fichier UneArdoiseViewController. Elle est appelée automatiquement par le système juste après la création de l'objet UneArdoiseViewController.
Je commence par utiliser un objet UIImage pour y charger l'image "image_guide.png".
Ensuite, je crée un objet UIImageView en utilisant la méthode initWithImage. La taille du contrôle est ajustée automatiquement sur la taille de l'image.
Je stocke le contrôle graphique dans la variable m_imageDessinView. C'est une variable accessible par toutes les méthodes de l'objet UneArdoiseViewController.m. Je l'ai déclaré dans le fichier UneArdoiseViewController.h.
Quand un contrôle graphique est créé avec IBuilder, il est connecté sur la vue courante qui s'occupe de l'affichage. Ce n'est pas le cas si le contrôle est créé dans le code. Il faut donc réaliser l'opération à la main. Pas compliqué :
Pour finir je release le contrôle graphique. Cela peut paraà®tre étrange. Pourquoi détruire un objet que je viens juste de créer ? En fait, la vue principale du controleur (self.view) "retient" le contrôle graphique depuis qu'il lui a été associé avec la méthode addSubview. J en'ai pas besoin de retenir en mémoire deux fois le contrôle graphique, alors je le libère tout de suite. En conséquence, le contrôle graphique sera détruit automatiquement quand la vue self.view est détruite. Cela simplifie la gestion mémoire, un sujet toujours épineux avec Cocoa Touch.
Sans oublier la déclaration de m_imageDessinView dans le fichier .h. C'est indispensable pour que toutes les méthodes de UneArdoiseViewController puissent y accéder.
Merci pour le tutorial.
mais ou est la partie de coloriage.
- "Bonjour, je souhaiterai assembler ma propre voiture, mais je n'y connais rien en mécanique..."
- "Hum faudrait peut-être apprendre les rudiments de comment fonctionne un moteur, quels sont les différents constituants de la mécanique d'une voiture, les principe de base de la thermo, et commencer par juste faire un petit montage simple avant de faire direct une voiture, non ?"
Ali, tu n'as pas un cours de Stupidité Artificielle à préparer pour ce soir ? Je voulais écrire un tuto sur le graphisme, et je m'exerce.
D'où l'expression "mettre les mains dans le cambouis" ?!
Pour dessiner un cercle plein dans un context graphique, il faut utiliser la méthode CGContextFillEllipseInRect en lui communiquant les coordonnées du rectangle englobant le cercle. La méthode CGContextSetFillColorWithColor définit la couleur de dessin.
L'exemple suivant affiche un cercle plein de couleur rouge (redColor) :
Le même exemple, mais affichant un cercle à partir d'un point et d'une épaisseur.
Le code calcule les dimensions du rectangle "englobant" le cercle à partir des coordonnées du centre et de la taille.
De plus, il faut sans doute tracer des lignes entre deux points successifs pour obtenir un dessin continu.
(Ah ben oui, Draken, tu t'exposes à la critique >:D)