Dans ma demande, je recevrai des valeurs RVB comme un caractère non signé afin qu'il ne soit pas plus de 255, J'utilise Nscolor API pour créer la couleur et utilisera la couleur pour dessiner la police et la couleur de fond,
Ceci est la fonction que j'ai écrite p> in Presque tous les cas, lorsque je comparais la couleur à l'aide de ma valeur RVB dans la bouche RVB, la couleur ne correspond pas,
Par exemple, lorsque je passe, p> r = 187,
g = 170,
B = 170, P> Il devrait dessiner le gris clair, mais je reçois une couleur courante complète, dans ce cas, p> Quelqu'un a une idée, ce que je fais mal, p> genre Cordialement P> Rohan P> P>
3 Réponses :
Si vous passez les composants d'entrée sur 255 et que vous souhaitez le limiter dans les 255 personnes à des fins de sécurité, vous pouvez essayer ceci: p>
cgfloat rfloat = R% 255.0; Cgfloat gfloat = g% 255.0; CGFLOAT BFLOAT = B% 255.0; P>
au lieu de diviser l'utilisation% valeur. P>
La sécurité n'a rien à voir avec ça. Utilisation de % code> produira des valeurs hors de portée, en tant que + ColorWithCalibrated: vert: bleu: alpha code> méthode accepte les valeurs dans la plage 0-1.
Dans la réponse, j'ai mentionné que si vous passez des valeurs d'entrée supérieures à 255, puis si vous souhaitez le restreindre entre 255%. En outre,% 255 ne donnera pas de valeur hors de portée. Par exemple. 177% 255 donnera 177
Le code fonctionne pour moi. Essayez de déboguer, vous êtes-vous rappeliez-vous d'appeler -set code> sur votre couleur après la création? Voici un exemple de code qui fonctionne: static NSColor *colorFromRGB(unsigned char r, unsigned char g, unsigned char b)
{
return [NSColor colorWithCalibratedRed:(r/255.0f) green:(g/255.0f) blue:(b/255.0f) alpha:1.0];
}
...
- (void)drawRect:(NSRect)rect {
NSColor *c = colorFromRGB(50, 100, 255);
[c set]; // <-- Important
NSRectFill(rect);
}
Merci Dietrich, même erreur que j'ai fait :(
Encore mieux, c'est si vous pouvez faire ce colorfromrgba code>, ajoutez un paramètre double A code>, puis attribuez-le à la valeur alpha: code>.
Vous pouvez utiliser cette extension qui accepte RVB (0-255) à partir de Photoshop, de croquis, etc. et renvoie une instance NSColor appropriée (veuillez vous déranger que certaines lignes de code source sont plus larges que présentées ici) : p> } p> Exemple Utilisez: P> let myColor = NSColor.fromRGB(140, green: 150, blue: 155)
let mySemiTranspColor = NSColor.fromRGB(140, green: 150, blue: 155, alpha: 50)
Merci! Cela fonctionne pour moi à Swift 5.5.
Vous êtes sûr que votre moniteur est calibré de la couleur?
Dans quelle échelle passez-vous aux composants d'entrée? Est-ce sur 255?