Java opacité de couleur
J'ai une méthode pour déterminer une couleur en fonction de la valeur. La méthode est comme suit:
public Color color(double val) {
double H = val * 0.3;
double S = 0.9;
double B = 0.9;
return Color.getHSBColor((float)H, (float)S, (float)B);
}
Je tiens également à rendre la couleur créé trasparent. Comment puis-je faire cela?
Grâce
OriginalL'auteur jpo | 2011-07-16
Vous devez vous connecter pour publier un commentaire.
La façon la plus simple est de spécifier R, G, B, et directement, à l'aide de ce constructeur:
public Couleur(float r, float g, float b, float)
.Je sais que vous avez TSL, mais vous pouvez convertir RVB assez facilement.
En fait le problème était la parenthèse à la fin, pour quelque raison... je viens de mettre des crochets autour d'elle pour marquer la chose comme un lien.
OriginalL'auteur Ray Toal
Utiliser le
Couleur
constructeur qui prend une valeur avec un canal alpha. Plus précisément, il faut d'abord convertir votre couleur de coordonnées de l'espace RVB:puis ajoutez la quantité désirée de transparence,
Cette valeur, vous pouvez passer au constructeur. Assurez-vous d'utiliser
true
comme deuxième argument.Je viens de réaliser que j'ai mal lu la documentation. J'ai édité ma réponse en conséquence. De toute façon: l'argument que vous passez à la couleur constructeur combine quatre octets en un entier: bleu, vert, rouge, et l'alpha (transparence), dans cet ordre. Le
HSBtoRGB
méthode vous donne un nombre entier avec le rouge, le vert et le bleu octets correctement réglée pour la couleur que vous voulez, mais la transparence de l'octet à zéro (totalement transparent). Pour faire une partie transparente de couleur, vous devez définir le dernier octet du montant de la transparence que vous souhaitez.alpha & 0xff
le fait.(cont.) en fait, pour être plus précis:
alpha & 0xff
prend votre quantité désirée de transparence et alors les zéros de tout, mais les 8 derniers bits, etrgba |= ...
utilise l'opération OU de mettre ces morceaux dans l'entier. Pour la (mauvaise) code que j'ai eu à l'origine,<< 24
déplace les 8 derniers bits les plus à gauche de 24 bits, afin qu'ils deviennent les 8 premiers bits, puisrgba |= ...
nouveau Rup ces bits en entier.OriginalL'auteur David Z
Je sais que c'est vieux, mais tout ce que je fais quand je veux opaque, avec le Java Graphique intégré dans l'Objet, est
new Color(RRR, GGG, BBB, AAA)
.Utilisé dans son contexte:
Dernière valeur est canal alpha/opacité, nombre plus élevé signifie moins opaque.
OriginalL'auteur user6412105
OriginalL'auteur jpo