16 진 색상 코드 (예 :)에서 색상을 얻으려면 어떻게 #FFDFD991
해야합니까?
파일을 읽고 16 진수 색상 코드를 받고 있습니다. System.Windows.Media.Color
16 진 색상 코드에 해당하는 인스턴스 를 만들어야합니다 . 이를 위해 프레임 워크에 내장 메소드가 있습니까?
#FF0000
해시 코드가 아닌 HTML (또는 16 진수) 색상 코드입니다. 차이점을 배우십시오.
16 진 색상 코드 (예 :)에서 색상을 얻으려면 어떻게 #FFDFD991
해야합니까?
파일을 읽고 16 진수 색상 코드를 받고 있습니다. System.Windows.Media.Color
16 진 색상 코드에 해당하는 인스턴스 를 만들어야합니다 . 이를 위해 프레임 워크에 내장 메소드가 있습니까?
#FF0000
해시 코드가 아닌 HTML (또는 16 진수) 색상 코드입니다. 차이점을 배우십시오.
답변:
나는 그것이 ARGB 코드라고 가정하고 있습니다 ... System.Drawing.Color
또는 당신을 언급하고 System.Windows.Media.Color
있습니까? 후자는 예를 들어 WPF에서 사용됩니다. 나는 아무도 그것을 언급하지 않은 것을 보았습니다.
using System.Windows.Media;
Color color = (Color)ColorConverter.ConvertFromString("#FFDFD991");
Color.FromArgb
이 경우 방법 을 사용하는 것이 더 쉽습니다 . 부동 소수점 알파를 사용하는 경우 255를 곱해야합니다.
HTML 유형 RGB 코드 (# FFCC66과 같은 16 진수 코드)를 의미한다고 가정하면 ColorTranslator 클래스를 사용하십시오 .
System.Drawing.Color col = System.Drawing.ColorTranslator.FromHtml("#FFCC66");
그러나 ARGB 16 진수 코드를 사용하는 경우 System.Windows.Media 네임 스페이스에서 ColorConverter 클래스를 사용할 수 있습니다 .
Color col = ColorConverter.ConvertFromString("#FFDFD991") as Color;
//or = (Color) ColorConverter.ConvertFromString("#FFCC66") ;
ColorTranslator를 사용하지 않으려는 경우 쉽게 사용할 수 있습니다.
string colorcode = "#FFFFFF00";
int argb = Int32.Parse(colorcode.Replace("#", ""), NumberStyles.HexNumber);
Color clr = Color.FromArgb(argb);
색상 코드는 ARGB 값의 16 진 표현입니다.
편집하다
단일 정수 대신 4 개의 값을 사용해야하는 경우이를 사용할 수 있습니다 (여러 주석을 결합).
string colorcode = "#FFFFFF00";
colorcode = colorcode.TrimStart('#');
Color col; // from System.Drawing or System.Windows.Media
if (colorcode.Length == 6)
col = Color.FromArgb(255, // hardcoded opaque
int.Parse(colorcode.Substring(0,2), NumberStyles.HexNumber),
int.Parse(colorcode.Substring(2,2), NumberStyles.HexNumber),
int.Parse(colorcode.Substring(4,2), NumberStyles.HexNumber));
else // assuming length of 8
col = Color.FromArgb(
int.Parse(colorcode.Substring(0, 2), NumberStyles.HexNumber),
int.Parse(colorcode.Substring(2, 2), NumberStyles.HexNumber),
int.Parse(colorcode.Substring(4, 2), NumberStyles.HexNumber),
int.Parse(colorcode.Substring(6, 2), NumberStyles.HexNumber));
참고 1 : NumberStyles는 System.Globalization에 있습니다.
참고 2 : 자체 오류 검사를 제공하십시오 (컬러 코드는 6 또는 8 자의 16 진수 값이어야 함)
colorcode = colorcode.Replace("#", "")
간단하게 사용하십시오 int a = byte.parse(colorcode.Substring(0,2), NumberStyles.HexNumber);
. Substring의 첫 번째 매개 변수 인 인덱스를 r의 경우 2, g의 경우 4, b의 경우 6으로 바꾸는 것을 잊지 마십시오.
FromArgb
1 System.Drawing.Color
개의 매개 변수 입력 및 4 개의 매개 변수 수신System.Windows.Media.Color
이 깔끔한 작은 확장 방법도 있습니다.
static class ExtensionMethods
{
public static Color ToColor(this uint argb)
{
return Color.FromArgb((byte)((argb & -16777216)>> 0x18),
(byte)((argb & 0xff0000)>> 0x10),
(byte)((argb & 0xff00) >> 8),
(byte)(argb & 0xff));
}
}
사용:
Color color = 0xFFDFD991.ToColor();
Color
올바르게 변환하지 못했기 때문에 밝혀졌습니다 . @too의 코드를 사용하여 수정했습니다.
& 0xFF
서로 다른 모든 값을 필요로하지 않고 매번 최종 다운 시프트 된 값을 수행 할 수 있습니다 &
.
아래의 세 가지 변형은 정확히 동일한 색상을 제공합니다. 마지막 것은 Visual Studio 2010 IDE (적절한 ReSharper 일 수 있음)에서 적절한 색상으로 강조 표시되는 이점이 있습니다.
var cc1 = System.Drawing.ColorTranslator.FromHtml("#479DEE");
var cc2 = System.Drawing.Color.FromArgb(0x479DEE);
var cc3 = System.Drawing.Color.FromArgb(0x47, 0x9D, 0xEE);
System.Windows.Media.Color
.
private Color FromHex(string hex)
{
if (hex.StartsWith("#"))
hex = hex.Substring(1);
if (hex.Length != 6) throw new Exception("Color not valid");
return Color.FromArgb(
int.Parse(hex.Substring(0, 2), System.Globalization.NumberStyles.HexNumber),
int.Parse(hex.Substring(2, 2), System.Globalization.NumberStyles.HexNumber),
int.Parse(hex.Substring(4, 2), System.Globalization.NumberStyles.HexNumber));
}
HEX 색상 코드를 System.Drawing.Color, 특히 WPF 양식의 배경으로 Alice Blue의 음영으로 변환해야하고 답을 찾는 데 예상보다 시간이 오래 걸렸습니다.
using System.Windows.Media;
-
System.Drawing.Color myColor = System.Drawing.ColorTranslator.FromHtml("#EFF3F7");
this.Background = new SolidColorBrush(System.Windows.Media.Color.FromArgb(myColor.A, myColor.R, myColor.G, myColor.B));
Windows Store 앱으로 수행하려면 @Hans Kesting 및 @Jink 답변을 따르십시오.
string colorcode = "#FFEEDDCC";
int argb = Int32.Parse(colorcode.Replace("#", ""), NumberStyles.HexNumber);
tData.DefaultData = Color.FromArgb((byte)((argb & -16777216) >> 0x18),
(byte)((argb & 0xff0000) >> 0x10),
(byte)((argb & 0xff00) >> 8),
(byte)(argb & 0xff));
이 게시물은 16 진수 색상 코드에서 시스템 색상으로 변환하려는 모든 사람들에게 적합합니다. 따라서 6 자리 (RGB) 및 8 자리 (ARGB) 16 진수 값을 모두 처리하는 포괄적 인 솔루션을 추가 할 것이라고 생각했습니다.
Microsoft에 따르면 RGB에서 ARGB 값으로 변환 할 때 기본적으로
알파 값은 암시 적으로 255 (완전 불투명)입니다.
즉, 6 자리 (RGB) 16 진수 색상 코드에 FF를 추가하면 8 자리 ARGB 16 진수 색상 코드가됩니다. 따라서 ARGB와 RGB 16 진수를 모두 처리하고 적절한 Color 구조체로 변환하는 간단한 방법을 만들 수 있습니다.
public static System.Drawing.Color GetColorFromHexValue(string hex)
{
string cleanHex = hex.Replace("0x", "").TrimStart('#');
if (cleanHex.Length == 6)
{
//Affix fully opaque alpha hex value of FF (225)
cleanHex = "FF" + cleanHex;
}
int argb;
if (Int32.TryParse(cleanHex, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out argb))
{
return System.Drawing.Color.FromArgb(argb);
}
//If method hasn't returned a color yet, then there's a problem
throw new ArgumentException("Invalid Hex value. Hex must be either an ARGB (8 digits) or RGB (6 digits)");
}
이것은 Hans Kesting의 답변에서 영감을 얻었습니다.
16 진수 값을 사용하기 위해 16 진수 색상의 Silverlight / WPF 세트 타원을 볼 수 있습니다 .
your_contorl.Color = DirectCast(ColorConverter.ConvertFromString("#D8E0A627"), Color)
WPF :
using System.Windows.Media;
//hex to color
Color color = (Color)ColorConverter.ConvertFromString("#7AFF7A7A");
//color to hex
string hexcolor = color.ToString();
Color [Indigo]
사용하다
System.Drawing.Color.FromArgb(myHashCode);
int
? 로의 변환을 한눈에 볼 수 있습니다 .
에서 .GetHashCode()
와 같이 HashCode를 의미하는 경우 되돌아 갈 수 없습니다. 해시 함수는 양방향이 아니므로 '앞으로'만 돌아갈 수는 없습니다.
16 진수 색상 값을 기준으로 색상을 가져와야하는 경우 Oded의 제안을 따르십시오.
프로젝트에서 ColorDialog를 사용했습니다. ColorDialog는 때때로 "Red", "Fhushia"를 반환하고 때로는 "fff000"을 반환합니다. 나는이 문제를 해결하여 누군가를 도울 수 있습니다.
SolidBrush guideLineColor;
if (inputColor.Any(c => char.IsDigit(c)))
{
string colorcode = inputColor;
int argbInputColor = Int32.Parse(colorcode.Replace("#", ""), NumberStyles.HexNumber);
guideLineColor = new SolidBrush(Color.FromArgb(argbInputColor));
}
else
{
Color col = Color.FromName(inputColor);
guideLineColor = new SolidBrush(col);
}
InputColor는 ColorDialog의 반환 값입니다.
이 질문에 답해 주신 모든 분들께 감사드립니다.