"Colorisation" d'une image
Le SDK XNA pour Pc et Xbox 360 donne la possibilité de "teinter" les images à l'affichage. C'est très pratique pour les jeux.
Par exemple on peut "teindre" en rouge un personnage touché par un projectile, en vert s'il est empoisonné, en bleu sous l'effet d'un sort, etc..
Savez-vous s'il est possible de faire la même chose facilement avec Core Graphics ? Dans le genre:
Par exemple on peut "teindre" en rouge un personnage touché par un projectile, en vert s'il est empoisonné, en bleu sous l'effet d'un sort, etc..
Savez-vous s'il est possible de faire la même chose facilement avec Core Graphics ? Dans le genre:
<br />// Pseudo code<br />draw (image, position, couleurDeTeinte)<br />
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Mais tu peux utiliser CoreGraphics pour dessiner ton image à coloriser, puis dessiner par dessus un rectangle de la couleur de "colorisation", en ayant mis un CGBlendMode à "kCGBlendModeHue" juste avant pour régler le mode de compositing pour faire ce que tu veux.
Voir ici pour les différents BlendModes et ce que donne entre autres les "Hue Blend Mode"
En effet, ce mode permet d'utiliser la "Hue" (teinte) de l'image source tout en gardant la luminosité (luminance) et saturation des pixels de l'image utilisée comme "background" de ton blending.
Donc pour résumer ça devrait donner un truc ressemblant à ça :
- CGContextDrawImage(ctx,imageAColoriser,rect)
- CGContextSaveGState(ctx)
- CGContextSetBlendMode(ctx,kCGBlendModeHue)
- CGContextSetFillColor(ctx,couleurDeColorisation)
- CGContextFillRect(ctx,rect)
- CGContextRestoreGState(ctx)
Les bestioles des jeux sont des sprites dessinés avec une couche alpha, de manière à superposer avec le décor du fond. Si j'applique un opérateur de colorisation rectangulaire sur mon image, il vas aussi agir sur le décor présent dans les "vides" du sprite (l'espace entre les jambes par exemple). Pas top graphiquement..
Pour éviter, il faudrais que la "colorisation" d'une image se fasse en tenant compte de sa couche alpha.
Mais sinon tu utilises la couche alpha de ton sprite comme masque... Voir sans doute de ce côté
Il y a tout un tas de modes de composition... à voir pour sélectionner celui qui te correspond.