Java Farbe, Deckkraft
Habe ich eine Methode, um zu bestimmen, eine Farbe, die basierend auf einen bestimmten Wert. Die Methode ist als solche:
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);
}
Will ich aber auch die Farbe angelegt trasparent. Wie kann ich dies tun?
Dank
InformationsquelleAutor jpo | 2011-07-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der einfachste Weg ist, um festzulegen, R, G, B und A direkt, mit diesem Konstruktor:
public Color(float r, float g, float b, float a)
.Ich weiß, Sie haben HSB, aber Sie können konvertieren zu RGB leicht genug.
Eigentlich das problem war die Klammer am Ende, aus irgendeinem Grund... ich habe nur die Spitzen Klammern um es zu markieren, das ganze als link.
InformationsquelleAutor Ray Toal
Verwenden Sie die die
Color
constructor , nimmt einen Wert mit einem alpha-Kanal. Speziell, Sie zuerst konvertieren Sie Ihre Farbe-Koordinaten in RGB-Raum:und fügen Sie dann die gewünschte Transparenz,
Diesen Wert können Sie übergeben Sie an den Konstruktor. Stellen Sie sicher, dass Sie
true
als das zweite argument.Ich erkannte, dass ich falsch gelesen in der Dokumentation. Ich habe bearbeitet meine Antwort entsprechend. Trotzdem: das argument, Sie an die Farbe-Konstruktor verbindet vier bytes in einen integer: blau, grün, rot und alpha (Transparenz), in dieser Reihenfolge. Die
HSBtoRGB
Methode gibt einen integer mit dem rot -, grün-und blau-bytes richtig gesetzt für die Farbe, die Sie wollen, aber die Transparenz byte null (vollständig transparent). Um eine teilweise transparente Farbe, die Sie benötigen, um das Letzte byte der Menge der Transparenz, die Sie wollen.alpha & 0xff
tut.(Forts.) eigentlich, um genauer zu sein:
alpha & 0xff
nimmt Ihre gewünschte Transparenz und dann alles Nullen, aber die letzten 8 bits, und diergba |= ...
verwendet die ODER-operation, um diese bits in der Ganzzahl. Für die (falsche) code hatte ich ursprünglich<< 24
verschiebt sich die letzten 8 bits nach Links um 24 bits, so dass Sie sich die ersten 8 bits, und dannrgba |= ...
wieder ORs diese bits in der Ganzzahl.InformationsquelleAutor David Z
Ich weiß, das ist alt, aber alles, was ich tun, wenn ich möchte, dass die Deckkraft mit der Java-built-in Graphics-Objekt, ist
new Color(RRR, GGG, BBB, AAA)
.Im Kontext:
Letzte Wert ist der alpha-Kanal/Deckfähigkeit, höhere Zahl bedeutet weniger deckend.
InformationsquelleAutor user6412105
InformationsquelleAutor jpo