J'ai un tableau de pixels (ayant des valeurs x et y). Comment définir la couleur de Pixel pointe vers le rouge
-
14-11-2019 - |
Question
Je veux juste savoir comment régler la couleur d'un pixel particulier en rouge? Supposons que x = 37 y = 54 et je veux changer la couleur de ce pixel en rouge. Je n'ai aucune idée de la façon de le faire. J'ai les valeurs des points autour d'un objet particulier dans un tableau de pixels utilisant l'algo de Marching Square.
La solution
Vous ne pouvez pas modifier les pixels d'un existant CGImage
. Vous devez créer un nouveau CGImage
avec le pixel a changé. Ce sont les étapes:
- Créer un
CGBitmapContext
avecCGBitmapContextCreate
. - Dessiner l'existant
CGImage
dans ça utilisantCGContextDrawImage
. - Dessiner le pixel en utilisant
CGContextSetFillColorWithColor
etCGContextFillRect
. - Créer un nouveau
CGImage
utilisantCGBitmapContextCreateImage
.
À la place d'utiliser CGContextSetFillColorWithColor
et CGContextFillRect
, vous pouvez modifier les données bitmap directement après avoir récupéré un pointeur avec CGBitmapContextGetData
. Ce serait plus rapide si vous allez le faire beaucoup.
De plus, si vous allez le faire beaucoup, vous voudrez créer le contexte bitmap et dessiner l'image d'origine une seule fois, et garder le contexte bitmap pour diddling. Mais créer le nouveau CGImage
Du contexte du bitmap peut être un goulot d'étranglement.
Autres conseils
Votre question est assez vague, mais voici une réponse générale:
Les couleurs de pixel sont généralement représentées avec 3 ou 4 octets:
Rouge - vert - bleu - (alpha)
Il devrait y avoir une fonction disponible dans le SDK que vous utilisez qui vous permet de définir ces valeurs pour un pixel. Vous régleriez le rouge à 255 et les autres à 0 si vous voulez une couleur rouge pure.
Si vous travaillez avec CCSPrite, changez simplement la couleur en utilisant le color
Propriété du sprite:
mySprite.color=ccc3(123,234,12); //use whatever color values for red, green, blue you want
Valeurs max pour le rouge, le vert, le bleu ccc3
sont 255; Lorsqu'il est au maximum, la couleur est la couleur naturelle du sprite; Vous ne pouvez pas aller plus lumineux, mais la modification de ces valeurs se déplacera vers d'autres couleurs ou assombrira l'image si toutes sont modifiées par la même quantité.
Pour le rouge pur, utilisez ccc3(255,0,0)