Ich arbeite daran, eine Widget-Transparenzoption für mein App-Widget zu implementieren, obwohl ich Probleme habe, die Hex-Farbwerte richtig zu machen. Als Neuling in der Hex-Farbtransparenz habe ich ein bisschen gesucht, obwohl ich keine spezifische Antwort auf meine Frage gefunden habe.
Ich möchte die Transparenz nach hexadezimaler Farbe einstellen. Sagen wir also, meine hexadezimale Farb-ID "# 33b5e5" soll zu 50% transparent sein. Dann benutze ich "# 8033b5e5", weil 80 50% ist.
Ich habe hier eine nützliche Tabelle gefunden: http://www.dtp-aus.com/hexadeci.htm . Mit diesen Daten habe ich es geschafft:
0% = #00
10% = #16
20% = #32
30% = #48
40% = #64
50% = #80
60% = #96
70% = #112
80% = #128
90% = #144
Jetzt tauchen die Probleme auf, wenn ich mehr als 100 hexadezimal bekomme. Hex Farbcodes können nur 8 Zeichen lang sein, oder? Zum Beispiel # 11233b5e5 (80%) stürzt ab.
Was kann ich tun, damit ich auch die höheren Nummern verwenden kann?
Hier ist eine korrekte Tabelle mit Prozentsätzen zu Hex-Werten. Z.B. Für 50% Weiß würden Sie # 80FFFFFF verwenden.
( Quelle )
Sie können die vollständige Tabelle mit Prozentsätzen für Hexadezimalwerte sehen und den Code auf diesem Spielplatz unter https://play.golang.org) ausführen /p/l1JaPYFzDkI .
Weitere Infos zur Konvertierung dezimal <=> hexadezimal
Das Problem kann generisch durch Kreuzmultiplikation gelöst werden.
Wir haben einen Prozentsatz (im Bereich von 0 bis 100) und eine andere Zahl (im Bereich von 0 bis 255), die dann in hexadezimal umgewandelt werden.
Für 1%
Für 2%
Die Tabelle in der besten Antwort gibt den prozentualen Anteil in Schritten von 5% an.
Wie berechne ich die Zahlen zwischen in deinem Kopf? Addieren Sie aufgrund des Inkrements 2.5 2 zum ersten und 3 zum nächsten
Ich bevorzuge es zu lehren, wie man die Lösung findet, anstatt den Tisch abzugeben
Gib einem Mann einen Fisch und du fütterst ihn für einen Tag; Bringe einem Mann das Fischen bei und füttere ihn ein Leben lang
Die hexadezimale Farbschreibweise sieht wie folgt aus: #AARRGGBB
Sie sollten sich zuerst ansehen, wie hexadezimal funktioniert. Sie können höchstens FF schreiben.
In diesem Diagramm werden keine Prozentangaben angezeigt. "# 90" ist nicht "90%". Dieses Diagramm zeigt die Umwandlung von Hexadezimal nach Dezimal. Die Hex-Zahl 90 (normalerweise als 0x90 dargestellt) entspricht der Dezimalzahl 144.
Hexadezimalzahlen sind Basis-16, daher ist jede Ziffer ein Wert zwischen 0 und F. Der Maximalwert für einen Zwei-Byte-Hexadezimalwert (z. B. die Transparenz einer Farbe) beträgt 0xFF oder 255 in Dezimalzahl. Somit ist 100% 0xFF.
Ich habe diese kleine Hilfemethode für eine Android App erstellt.
/**
* @param originalColor color, without alpha
* @param alpha from 0.0 to 1.0
* @return
*/
public static String addAlpha(String originalColor, double alpha) {
long alphaFixed = Math.round(alpha * 255);
String alphaHex = Long.toHexString(alphaFixed);
if (alphaHex.length() == 1) {
alphaHex = "0" + alphaHex;
}
originalColor = originalColor.replace("#", "#" + alphaHex);
return originalColor;
}
Dies könnte eine sehr späte Antwort sein.
Alle Prozentwerte werden auf die Hexadezimalwerte abgebildet.
versuchen Sie dies auf Google Search (oder hier klicken )
255 * .2 to hex
dadurch wird 0x33
generiert.
Google rundet jedoch keine Werte, sodass Sie nur einstellige Multiplikatoren verwenden können. Wenn Sie beispielsweise .85 verwenden möchten, müssen Sie zuerst den gerundeten Wert von 255 * .85 abrufen und dann (rounded-value here) to hex
in die Google-Suche eingeben.
Mir ist klar, dass dies eine alte Frage ist, aber ich bin darauf gestoßen, als ich etwas Ähnliches getan habe.
Mit SASS haben Sie eine sehr elegante Möglichkeit, RGBA in hexadezimales ARGB umzuwandeln: ie-hex-str
. Ich habe es hier in einem Mixin verwendet.
@mixin ie8-rgba ($r, $g, $b, $a){
$rgba: rgba($r, $g, $b, $a);
$ie8-rgba: ie-hex-str($rgba);
.lt-ie9 &{
background-color: transparent;
filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#{$ie8-rgba}', endColorstr='#{$ie8-rgba}');
}
}
.transparent{
@include ie8-rgba(88,153,131,.8);
background-color: rgba(88,153,131,.8);
}
ausgänge:
.transparent {
background-color: rgba(88, 153, 131, 0.8);
}
.lt-ie9 .transparent {
background-color: transparent;
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#CC589983', endColorstr='#CC589983');
zoom: 1;
}
Verwenden Sie python, um dies zu berechnen, zum Beispiel (geschrieben in python 3), 50% Transparenz:
hex(round(256*0.50))
:)