2011-01-12 5 views
2

Silverlight에 IValueConverter을 쓰려고합니다. 이 IValueConverterSolidColorBrush을 반환합니다. 변환기는 "FFFF5300"과 같은 16 진수 값을 전달합니다. Silverlight에는 BrushConverter 클래스가 없으므로 수동으로이 값을 구문 분석해야했습니다.Silverlight에서 16 진수 값을 SolidColorBrush로 변환

byte a = (byte)(Convert.ToUInt32(color.Substring(0, 2), 16)); 
byte r = (byte)(Convert.ToUInt32(color.Substring(2, 2), 16)); 
byte g = (byte)(Convert.ToUInt32(color.Substring(4, 2), 16)); 
byte b = (byte)(Convert.ToUInt32(color.Substring(6, 2), 16)); 

내 문제는, 내가 IValueConverterConvert.ToX 방법을 사용할 수 없습니다 :이 작업을 수행하기 위해, 나는 다음과 같은 코드가 있습니다. 이 때문에 두 문자 문자열을 바이트 값으로 변환하는 방법을 모르겠습니다. 누군가 이걸하는 법을 말해 줄 수 있습니까?

+0

XAML은 이미 "#"접두사로 16 진수 형식의 색을 지원합니다 (http://msdn.microsoft.com/en-us/library/system.windows.media.solidcolorbrush.aspx 참조). 이게 필요해? –

+2

값 변환기에서 Convert.XX를 사용할 수 있습니다. 왜 너는 그럴 수 없다는 인상을 받고 있니? 값 매개 변수를 다른 유형으로 변환 할 수 없습니다. 위의 변환에서'Convert.ToByte()'를 사용합니다. – BrokenGlass

답변

1

는 잘 모르겠어요 경우이 당신이 요구하고 있지만, 다음 코드는 Convert를 사용하지 않는 것을 :

byte a = byte.Parse(color.Substring(0, 2), NumberStyles.HexNumber); 
// etc. 
0

값은 다음과 같은 형식으로 "#xxxxxxxx"에 있어야합니다

System.Drawing.ColorTranslator.FromHtml(Value); 
+0

이 메서드는 System.Drawing.Color를 출력합니다. Silverlight의 경우 그는 System.Windows.Media.Color를 원할 것입니다. –

+0

그러나 System.Drawing.Color는 System.Windows.Media.Color로 쉽게 변환 할 수 있습니다. System.Windows.Media.Color.FromArgb (color.A, color.R, color.G, color.B) – LionSoft

2

실제로 IValueConverter에서 Convert.ToXXX() 방법을 사용할 수 있습니다. Convert : System.Convert.ToXXX() 앞에 System 네임 스페이스를 추가하기 만하면됩니다.

관련 문제