16 진 색상 코드 (예 :)에서 색상을 얻으려면 어떻게 #FFDFD991
해야합니까?
파일을 읽고 16 진수 색상 코드를 받고 있습니다. System.Windows.Media.Color
16 진 색상 코드에 해당하는 인스턴스 를 만들어야합니다 . 이를 위해 프레임 워크에 내장 메소드가 있습니까?
답변
나는 그것이 ARGB 코드라고 가정하고 있습니다 … System.Drawing.Color
또는 당신을 언급하고 System.Windows.Media.Color
있습니까? 후자는 예를 들어 WPF에서 사용됩니다. 나는 아무도 그것을 언급하지 않은 것을 보았습니다.
using System.Windows.Media;
Color color = (Color)ColorConverter.ConvertFromString("#FFDFD991");
답변
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 진수 값이어야 함)
답변
이 깔끔한 작은 확장 방법도 있습니다.
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();
답변
아래의 세 가지 변형은 정확히 동일한 색상을 제공합니다. 마지막 것은 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);
답변
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));