질문자 :SweSnow
16진수 색상 값을 올바르게 가져오는 데 문제가 있지만 앱 위젯에 대한 위젯 투명도 옵션을 구현하는 중입니다. 16진수 색상 투명도에 대해 완전히 새롭기 때문에 내 질문에 대한 특정 답변을 찾을 수 없었지만 조금 검색했습니다.
16진수 색상으로 투명도를 설정하고 싶으므로 내 16진수 색상 ID가 "#33b5e5"이고 50% 투명하기를 원합니다. 그런 다음 80은 50%이므로 "#8033b5e5"를 사용하겠습니다.
여기에서 유용한 차트를 찾았습니다. http://www.dtp-aus.com/hexadeci.htm . 이 데이터를 사용하여 다음과 같은 결과를 얻을 수 있었습니다.
0% = #00 10% = #16 20% = #32 30% = #48 40% = #64 50% = #80 60% = #96 70% = #112 80% = #128 90% = #144
이제 문제는 16진수에서 100보다 높을 때 나타나기 시작합니다. 16진수 색상 코드는 8개의 기호만 사용할 수 있습니다. 맞나요? 예를 들어 #11233b5e5(80%)가 충돌합니다.
더 높은 숫자도 사용할 수 있도록 하려면 어떻게 해야 합니까?
다음은 16진수 값에 대한 올바른 백분율 표입니다. 예를 들어 50% 흰색의 경우 #80FFFFFF를 사용합니다.
- 100% — FF
- 95% — F2
- 90% — E6
- 85% — D9
- 80% — CC
- 75% — BF
- 70% — B3
- 65% — A6
- 60% — 99
- 55% - 8C
- 50% — 80
- 45% — 73
- 40% — 66
- 35% — 59
- 30% — 4D
- 25% — 40
- 20% — 33
- 15% — 26
- 10% — 1A
- 5% — 0D
- 0% — 00
( 출처 )
Ben Clayton짧은 답변
16진수 값에 대한 전체 백분율 테이블을 보고 https://play.golang.org/p/l1JaPYFzDkI의 이 플레이그라운드에서 코드를 실행할 수 있습니다.
의사 코드의 간단한 설명
16진수 값에 대한 백분율
- 십진수 = 백분율 * 255 / 100 . 예 : 십진수 = 50*255/100 = 127.5
- 10진수 를 16진수 값으로 변환합니다. 예: 10진수로 127.5 = 7*16ˆ1 + 15 = 16진수로 7F
16진수 값을 백분율로
- 16진수 값을 10진수로 변환합니다. 예: D6 = 13*16ˆ1 + 6 = 214
- 백분율 = (소수점 값) * 100 / 255. 예: 214 *100/255 = 84%
10진수 <=> 16진수 변환에 대한 추가 정보
긴 대답: 머리로 계산하는 방법
문제는 일반적으로 교차 곱셈 으로 해결할 수 있습니다.
퍼센트(0 ~ 100 범위)와 16진수로 변환된 다른 숫자(0 ~ 255 범위)가 있습니다.
- 100 <==> 255(16진수의 FF)
- 0 <==> 0(16진수로 00)
1%
- 1 * 255 / 100 = 2,5
- 2,5는 반올림하면 2입니다.
2%
- 2 * 255 / 100 = 5
- 헥사에서 5 는 5입니다.
베스트 답변의 표는 5% 단위로 백분율을 제공합니다.
당신의 머리에서 사이의 숫자를 계산하는 방법? 2.5 증분으로 인해 첫 번째에 2를 추가하고 다음에 3을 추가합니다.
- 95% — F2 // 시작
- 96% — F4 // F2에 2 더하기
- 97% — F7 // 3을 더합니다. 또는 F2 + 5 = F7
- 98% — F9 // 2 추가
- 99% — FC // 3 추가. 9 + 3 = 12 in hexa : C
- 100% — FF // 2 더하기
나는 결과가 어디에서 왔는지 모르는 답표를 보여주는 것보다 솔루션을 찾는 방법을 가르치는 것을 선호합니다.
사람에게 물고기를 주면 하루 동안 먹일 수 있습니다. 사람에게 고기 잡는 법을 가르치면 평생 먹여 살릴 수 있습니다.
Raymond Chenon색상 16진수 표기법은 다음과 같습니다. #AARRGGBB
- A : 알파
- R : 빨간색
- G : 녹색
- B : 파란색
먼저 16진수 가 어떻게 작동하는지 살펴봐야 합니다. 최대 FF까지 쓸 수 있습니다.
erkangur그 차트에는 백분율이 표시되지 않습니다. "#90"은 "90%"가 아닙니다. 해당 차트는 16진수에서 10진수로의 변환을 보여줍니다. 16진수 90(일반적으로 0x90으로 표시)은 10진수 144와 같습니다.
16진수는 16진수이므로 각 숫자는 0과 F 사이의 값입니다. 2바이트 16진수 값(예: 색상의 투명도)에 대한 최대값은 0xFF 또는 10진수로 255입니다. 따라서 100%는 0xFF입니다.
Bryan HerbstAndroid 앱을 위한 이 작은 도우미 메서드를 만들었습니다.
/** * @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; }
dwbritoamalBitGoogle 검색에서 이것을 시도 하십시오 (또는 여기를 클릭하십시오 )
255 * .2 to hex
결과적으로 0x33
을 생성합니다.
그러나 Google은 값을 반올림하지 않으므로 1자리 승수만 사용할 수 있습니다. .85를 사용하려면 먼저 반올림된 값 255 * .85를 가져온 다음 (rounded-value here) to hex
로 입력해야 합니다.
chjarder나는 이것이 오래된 질문이라는 것을 알고 있지만 비슷한 일을 할 때 그것을 발견했습니다.
SASS를 사용하면 RGBA를 16진수 ARGB로 변환하는 매우 우아한 방법이 있습니다: ie-hex-str
. 나는 이것을 mixin에서 사용했습니다.
@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); }
출력:
.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; }
fontophilic파이썬을 사용하여 이것을 계산합니다(예: 파이썬 3으로 작성), 50% 투명도:
hex(round(256*0.50))
:)
Geng Jiawen나는 항상 int/hex alpha 값을 확인하기 위해 여기에 옵니다. 따라서 내 Java utils 클래스에서 간단한 메소드를 작성하십시오. 이 방법은 백분율을 16진수 값으로 변환하고 색상 코드 문자열 값에 추가합니다.
public static String setColorAlpha(int percentage, String colorCode){ double decValue = ((double)percentage / 100) * 255; String rawHexColor = colorCode.replace("#",""); StringBuilder str = new StringBuilder(rawHexColor); if(Integer.toHexString((int)decValue).length() == 1) str.insert(0, "#0" + Integer.toHexString((int)decValue)); else str.insert(0, "#" + Integer.toHexString((int)decValue)); return str.toString(); }
따라서 Utils.setColorAlpha(30, "#000000")
#4c000000
줄 것입니다.
Amad Yus출처 : http:www.stackoverflow.com/questions/15852122/hex-transparency-in-colors