색의 16진수 투명도
앱 위젯에 대한 위젯 투명성 옵션을 구현하는 중이지만 16진수 색상 값을 올바르게 파악하는 데 어려움을 겪고 있습니다.육각색 투명도에 완전히 익숙하지 않아서 제 질문에 대한 구체적인 답을 찾지 못했지만 주변을 검색했습니다.
저는 16진수 색상으로 투명도를 설정하고 싶기 때문에 제 16진수 색상 ID "#33b5e5"로 하고 50% 투명도로 하고 싶습니다.그럼 "#8033b5e5"를 사용하겠습니다. 80%는 50%이기 때문입니다.
여기서 유용한 차트를 찾았습니다. 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% 흰색의 경우 #80FFFF를 사용합니다.대신 투명도 측면에서 생각하려면 백분율 순서를 뒤집습니다(불투명할수록 = 투명하지 않음).
| % | 육각형 |
|---|---|
| 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 |
(출처 질문)
단답: 백분율 전체 표
https://play.golang.org/p/l1JaPYFzDkI 의 이 놀이터에서 16진수 값에 대한 백분율 표를 보고 코드를 실행할 수 있습니다.
Ok 표는 결과를 찾는 방법이 아니라 결과를 알려줍니다.다음 부분에서는 자신을 계산하는 방법을 설명합니다.
의사 코드로 된 짧은 설명
16진수 값에 대한 백분율
- 10진수 = 백분율 * 255 / 100 . ex : 10진수 = 50*255/100 = 127.5
- 10진수를 16진수 값으로 변환합니다. ex: 127.5(10진수) = 7*16진수 1 + 15 = 7F(16진수)
백분율에 대한 16진수 값
- 16진수 10진수 값을 10진수로 변환합니다.ex: D6 = 13*16⁄1 + 6 = 214
- 백분율 = (10진수 값) * 100 / 255. ex : 214 * 100/255 = 84%
긴 대답: 머릿속으로 계산하는 방법
이 문제는 교차 곱셈으로 일반적으로 해결할 수 있습니다.
백분율(0 ~ 100)과 다른 숫자(0 ~ 255)가 16진수로 변환됩니다.
- 100 <==> 255(FF는 16진수)
- 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 // 16진수에 3.9 + 3 = 12 추가 : C
- 100% — FF // 2 추가
결과가 어디서 나오는지 모르는 답변표를 보여주는 것보다 해결책을 찾는 방법을 가르치는 것을 선호합니다.
사람에게 물고기를 주면, 당신은 그에게 하루 동안 먹이를 주고, 사람에게 물고기 잡는 법을 가르쳐 주면, 평생 동안 먹이를 줍니다.
색상 16진수 표기법은 다음과 같습니다. #AARGGBB
- A: 알파
- R : 빨간색
- G : 녹색
- B : 블루
먼저 16진수가 어떻게 작동하는지 살펴봐야 합니다.최대 FF까지 쓸 수 있습니다.
안드로이드 앱을 위한 작은 도우미 방법을 만들었습니다. 사용하게 될 수도 있습니다.
/**
* @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;
}
이 차트에는 백분율이 표시되지 않습니다."#90"은 "90%"가 아닙니다.이 차트는 16진수에서 10진수로의 변환을 보여줍니다.16진수 90(일반적으로 0x90으로 표시됨)은 소수점 144와 같습니다.
16진수 숫자는 16진수이므로 각 숫자는 0과 F 사이의 값입니다.2바이트 16진수 값(색상 투명도 등)의 최대값은 0xFF 또는 10진수로 255입니다.따라서 100%는 0xFF입니다.
구글 검색에서 이것을 사용해 보세요 (또는 여기를 클릭하세요)
255 * .2 to hex
됩니다생이 생성됩니다.0x33결과적으로.
그러나 Google은 값을 반올림하지 않으므로 1자리 승수만 사용할 수 있습니다.예를 들어 .85를 사용하려면 먼저 255 *.85의 반올림 값을 얻은 다음 다음 다음을 입력합니다.(rounded-value here) to hex구글 검색에서.
저는 이것이 오래된 질문이라는 것을 알지만, 저는 비슷한 것을 할 때 그것을 발견했습니다.
ARGB로합니다.ie-hex-str저는 여기 믹스인에서 그것을 사용했습니다.
@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;
}
나는 항상 int/hex 알파 값을 확인하기 위해 여기에 계속 옵니다.그래서, 저는 제 자바 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
언급URL : https://stackoverflow.com/questions/15852122/hex-transparency-in-colors
'programing' 카테고리의 다른 글
| UITableView Section 제목을 프로그래밍 방식으로 설정하는 방법(iPhone/iPad)은 무엇입니까? (0) | 2023.06.03 |
|---|---|
| 사용을 종료하면 열려 있는 SQL 연결이 닫힙니다. (0) | 2023.06.03 |
| MongoDB에서 자동 증분을 구현해야 합니까? (0) | 2023.06.03 |
| npm 설치에서 충족되지 않는 종속성이 표시되는 이유는 무엇입니까? (0) | 2023.05.29 |
| C#의 기본 생성자 - 어떤 것이 먼저 호출됩니까? (0) | 2023.05.29 |