2010-05-04 156 views

回答

2

我開發了一個非常有用的ColorFromString類,它正是這麼做的。你可以在這裏得到代碼ColorFromString for Silverlight or NET,或者在這裏:

using System; 
using System.Collections.Generic; 
using System.Globalization; 
using System.Windows.Media; 

namespace ClassLibrary 
{ 
    public static class ColorFromString 
    { 
     private static Dictionary<string, Color> namedColors = 
     new Dictionary<string, Color>(); 

     // Extension for string 
     public static Color ToColor(this string value) 
     { 
      if (value == null) 
       return Colors.Red; 

      // Named Colors 
      string valueLower = value.ToLower(); 
      if (namedColors.ContainsKey(valueLower)) 
       return namedColors[valueLower]; 

      // #ARGB and #RGB Hex Colors 
      if (value[0] == '#') 
       value = value.Remove(0, 1); 

      int length = value.Length; 
      if ((length == 6 || length == 8) && IsHexColor(value)) 
      { 
       if (length == 8) 
        return Color.FromArgb(
        byte.Parse(value.Substring(0, 2), NumberStyles.HexNumber), 
        byte.Parse(value.Substring(2, 2), NumberStyles.HexNumber), 
        byte.Parse(value.Substring(4, 2), NumberStyles.HexNumber), 
        byte.Parse(value.Substring(6, 2), NumberStyles.HexNumber)); 

       if (length == 6) 
        return Color.FromArgb(0xff, 
        byte.Parse(value.Substring(0, 2), NumberStyles.HexNumber), 
        byte.Parse(value.Substring(2, 2), NumberStyles.HexNumber), 
        byte.Parse(value.Substring(4, 2), NumberStyles.HexNumber)); 
      } 

      // A,R,G,B and R,G,B Colors 
      string[] argb = value.Split(
      new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries); 
      if (argb != null) 
      { 
       if (argb.Length == 4) 
        return Color.FromArgb(
        byte.Parse(argb[0]), byte.Parse(argb[1]), byte.Parse(argb[2]), 
        byte.Parse(argb[3])); 

       if (argb.Length == 3) 
        return Color.FromArgb(0xff, 
        byte.Parse(argb[0]), byte.Parse(argb[1]), byte.Parse(argb[2])); 
      } 

      return Colors.Red; 
     } 

     private static bool IsHexColor(string value) 
     { 
      if (value == null) 
       return false; 

      foreach (char c in value.ToCharArray()) 
       if (!Uri.IsHexDigit(c)) 
        return false; 

      return true; 
     } 

     static ColorFromString() 
     { 
      namedColors.Add("aliceblue", ToColor("#f0f8ff")); 
      namedColors.Add("antiquewhite", ToColor("#faebd7")); 
      namedColors.Add("aqua", ToColor("#00ffff")); 
      namedColors.Add("aquamarine", ToColor("#7fffd4")); 
      namedColors.Add("azure", ToColor("#f0ffff")); 
      namedColors.Add("beige", ToColor("#f5f5dc")); 
      namedColors.Add("bisque", ToColor("#ffe4c4")); 
      namedColors.Add("black", ToColor("#000000")); 
      namedColors.Add("blanchedalmond", ToColor("#ffebcd")); 
      namedColors.Add("blue", ToColor("#0000ff")); 
      namedColors.Add("blueviolet", ToColor("#8a2be2")); 
      namedColors.Add("brown", ToColor("#a52a2a")); 
      namedColors.Add("burlywood", ToColor("#deb887")); 
      namedColors.Add("cadetblue", ToColor("#5f9ea0")); 
      namedColors.Add("chartreuse", ToColor("#7fff00")); 
      namedColors.Add("chocolate", ToColor("#d2691e")); 
      namedColors.Add("coral", ToColor("#ff7f50")); 
      namedColors.Add("cornflowerblue", ToColor("#6495ed")); 
      namedColors.Add("cornsilk", ToColor("#fff8dc")); 
      namedColors.Add("crimson", ToColor("#dc143c")); 
      namedColors.Add("cyan", ToColor("#00ffff")); 
      namedColors.Add("darkblue", ToColor("#00008b")); 
      namedColors.Add("darkcyan", ToColor("#008b8b")); 
      namedColors.Add("darkgoldenrod", ToColor("#b8860b")); 
      namedColors.Add("darkgray", ToColor("#a9a9a9")); 
      namedColors.Add("darkgreen", ToColor("#006400")); 
      namedColors.Add("darkkhaki", ToColor("#bdb76b")); 
      namedColors.Add("darkmagenta", ToColor("#8b008b")); 
      namedColors.Add("darkolivegreen", ToColor("#556b2f")); 
      namedColors.Add("darkorange", ToColor("#ff8c00")); 
      namedColors.Add("darkorchid", ToColor("#9932cc")); 
      namedColors.Add("darkred", ToColor("#8b0000")); 
      namedColors.Add("darksalmon", ToColor("#e9967a")); 
      namedColors.Add("darkseagreen", ToColor("#8fbc8f")); 
      namedColors.Add("darkslateblue", ToColor("#483d8b")); 
      namedColors.Add("darkslategray", ToColor("#2f4f4f")); 
      namedColors.Add("darkturquoise", ToColor("#00ced1")); 
      namedColors.Add("darkviolet", ToColor("#9400d3")); 
      namedColors.Add("deeppink", ToColor("#ff1493")); 
      namedColors.Add("deepskyblue", ToColor("#00bfff")); 
      namedColors.Add("dimgray", ToColor("#696969")); 
      namedColors.Add("dodgerblue", ToColor("#1e90ff")); 
      namedColors.Add("firebrick", ToColor("#b22222")); 
      namedColors.Add("floralwhite", ToColor("#fffaf0")); 
      namedColors.Add("forestgreen", ToColor("#228b22")); 
      namedColors.Add("fuchsia", ToColor("#ff00ff")); 
      namedColors.Add("gainsboro", ToColor("#dcdcdc")); 
      namedColors.Add("ghostwhite", ToColor("#f8f8ff")); 
      namedColors.Add("gold", ToColor("#ffd700")); 
      namedColors.Add("goldenrod", ToColor("#daa520")); 
      namedColors.Add("gray", ToColor("#808080")); 
      namedColors.Add("green", ToColor("#008000")); 
      namedColors.Add("greenyellow", ToColor("#adff2f")); 
      namedColors.Add("honeydew", ToColor("#f0fff0")); 
      namedColors.Add("hotpink", ToColor("#ff69b4")); 
      namedColors.Add("indianred", ToColor("#cd5c5c")); 
      namedColors.Add("indigo", ToColor("#4b0082")); 
      namedColors.Add("ivory", ToColor("#fffff0")); 
      namedColors.Add("khaki", ToColor("#f0e68c")); 
      namedColors.Add("lavender", ToColor("#e6e6fa")); 
      namedColors.Add("lavenderblush", ToColor("#fff0f5")); 
      namedColors.Add("lawngreen", ToColor("#7cfc00")); 
      namedColors.Add("lemonchiffon", ToColor("#fffacd")); 
      namedColors.Add("lightblue", ToColor("#add8e6")); 
      namedColors.Add("lightcoral", ToColor("#f08080")); 
      namedColors.Add("lightcyan", ToColor("#e0ffff")); 
      namedColors.Add("lightgoldenrodyellow", ToColor("#fafad2")); 
      namedColors.Add("lightgreen", ToColor("#90ee90")); 
      namedColors.Add("lightgrey", ToColor("#d3d3d3")); 
      namedColors.Add("lightpink", ToColor("#ffb6c1")); 
      namedColors.Add("lightsalmon", ToColor("#ffa07a")); 
      namedColors.Add("lightseagreen", ToColor("#20b2aa")); 
      namedColors.Add("lightskyblue", ToColor("#87cefa")); 
      namedColors.Add("lightslategray", ToColor("#778899")); 
      namedColors.Add("lightsteelblue", ToColor("#b0c4de")); 
      namedColors.Add("lightyellow", ToColor("#ffffe0")); 
      namedColors.Add("lime", ToColor("#00ff00")); 
      namedColors.Add("limegreen", ToColor("#32cd32")); 
      namedColors.Add("linen", ToColor("#faf0e6")); 
      namedColors.Add("magenta", ToColor("#ff00ff")); 
      namedColors.Add("maroon", ToColor("#800000")); 
      namedColors.Add("mediumaquamarine", ToColor("#66cdaa")); 
      namedColors.Add("mediumblue", ToColor("#0000cd")); 
      namedColors.Add("mediumorchid", ToColor("#ba55d3")); 
      namedColors.Add("mediumpurple", ToColor("#9370db")); 
      namedColors.Add("mediumseagreen", ToColor("#3cb371")); 
      namedColors.Add("mediumslateblue", ToColor("#7b68ee")); 
      namedColors.Add("mediumspringgreen", ToColor("#00fa9a")); 
      namedColors.Add("mediumturquoise", ToColor("#48d1cc")); 
      namedColors.Add("mediumvioletred", ToColor("#c71585")); 
      namedColors.Add("midnightblue", ToColor("#191970")); 
      namedColors.Add("mintcream", ToColor("#f5fffa")); 
      namedColors.Add("mistyrose", ToColor("#ffe4e1")); 
      namedColors.Add("moccasin", ToColor("#ffe4b5")); 
      namedColors.Add("navajowhite", ToColor("#ffdead")); 
      namedColors.Add("navy", ToColor("#000080")); 
      namedColors.Add("oldlace", ToColor("#fdf5e6")); 
      namedColors.Add("olive", ToColor("#808000")); 
      namedColors.Add("olivedrab", ToColor("#6b8e23")); 
      namedColors.Add("orange", ToColor("#ffa500")); 
      namedColors.Add("orangered", ToColor("#ff4500")); 
      namedColors.Add("orchid", ToColor("#da70d6")); 
      namedColors.Add("palegoldenrod", ToColor("#eee8aa")); 
      namedColors.Add("palegreen", ToColor("#98fb98")); 
      namedColors.Add("paleturquoise", ToColor("#afeeee")); 
      namedColors.Add("palevioletred", ToColor("#db7093")); 
      namedColors.Add("papayawhip", ToColor("#ffefd5")); 
      namedColors.Add("peachpuff", ToColor("#ffdab9")); 
      namedColors.Add("peru", ToColor("#cd853f")); 
      namedColors.Add("pink", ToColor("#ffc0cb")); 
      namedColors.Add("plum", ToColor("#dda0dd")); 
      namedColors.Add("powderblue", ToColor("#b0e0e6")); 
      namedColors.Add("purple", ToColor("#800080")); 
      namedColors.Add("red", ToColor("#ff0000")); 
      namedColors.Add("rosybrown", ToColor("#bc8f8f")); 
      namedColors.Add("royalblue", ToColor("#4169e1")); 
      namedColors.Add("saddlebrown", ToColor("#8b4513")); 
      namedColors.Add("salmon", ToColor("#fa8072")); 
      namedColors.Add("sandybrown", ToColor("#f4a460")); 
      namedColors.Add("seagreen", ToColor("#2e8b57")); 
      namedColors.Add("seashell", ToColor("#fff5ee")); 
      namedColors.Add("sienna", ToColor("#a0522d")); 
      namedColors.Add("silver", ToColor("#c0c0c0")); 
      namedColors.Add("skyblue", ToColor("#87ceeb")); 
      namedColors.Add("slateblue", ToColor("#6a5acd")); 
      namedColors.Add("slategray", ToColor("#708090")); 
      namedColors.Add("snow", ToColor("#fffafa")); 
      namedColors.Add("springgreen", ToColor("#00ff7f")); 
      namedColors.Add("steelblue", ToColor("#4682b4")); 
      namedColors.Add("tan", ToColor("#d2b48c")); 
      namedColors.Add("teal", ToColor("#008080")); 
      namedColors.Add("thistle", ToColor("#d8bfd8")); 
      namedColors.Add("tomato", ToColor("#ff6347")); 
      namedColors.Add("turquoise", ToColor("#40e0d0")); 
      namedColors.Add("violet", ToColor("#ee82ee")); 
      namedColors.Add("wheat", ToColor("#f5deb3")); 
      namedColors.Add("white", ToColor("#ffffff")); 
      namedColors.Add("whitesmoke", ToColor("#f5f5f5")); 
      namedColors.Add("yellow", ToColor("#ffff00")); 
      namedColors.Add("yellowgreen", ToColor("#9acd32")); 
     } 
    } 
} 
-1

兩種顏色可能看起來並不接近,但在16,777,216種可能組合(256 * 256 * 256)中只有140種「指定」顏色。

很難查看RGB值並對顏色匹配做出任何結論。


'GetNearest... 
' http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/b2d491ac-4031-46d6-bccb-8bf9a46c2289 
' http://www.eggheadcafe.com/conversation.aspx?messageid=31472401&threadid=31472286 

Imports System.Drawing 
Imports System.Reflection 
Imports System.Runtime.CompilerServices 

Namespace Drawing 

    <HideModuleName()> _ 
    Public Module ColorExtensions 

     ''' <summary> 
     ''' Gets the <see cref="System.Drawing.Color.Name">System.Drawing.Color.Name</see> of the closest matching color. 
     ''' </summary> 
     ''' <example> 
     ''' <code> 
     ''' Private Sub Example() 
     '''  Dim oColor As Color = Color.FromName(GetNearestName(Color.FromArgb(255, 255, 255, 0))) 
     '''  Debug.Assert(oColor.Name = "Yellow") 
     ''' End Sub 
     ''' </code> 
     ''' </example> 
     <Extension()> _ 
     Public Function GetNearestName(ByVal unknownColor As Color) As String 

      'short-circut 
      If unknownColor.IsNamedColor Then 
       Return unknownColor.Name 
      End If 

      Dim oBestMatch As ColorName = GetNearestNameInternal(unknownColor) 

      Return oBestMatch.Name 
     End Function 

     ''' <summary> 
     ''' Gets the <see cref="System.Drawing.KnownColor">System.Drawing.KnownColor</see> of the closest matching known color. 
     ''' </summary> 
     ''' <example> 
     ''' <code> 
     ''' Private Sub Example() 
     '''  Dim oColor As Color = Color.FromKnownColor(GetNearestKnownColor(Color.FromArgb(255, 255, 255, 0))) 
     '''  Debug.Assert(oColor.Name = "Yellow") 
     ''' End Sub 
     ''' </code> 
     ''' </example> 
     <Extension()> _ 
     Public Function GetNearestKnownColor(ByVal unknownColor As Color) As KnownColor 

      'short-circut 
      If unknownColor.IsKnownColor Then 
       Return unknownColor.ToKnownColor 
      End If 

      Dim oBestMatch As ColorName = GetNearestKnownColorInternal(unknownColor) 

      Return oBestMatch.Color.ToKnownColor 
     End Function 

     <DebuggerDisplay("Name={Color.Name}, Distance={Distance}, ARGB=({Color.A}, {Color.R}, {Color.G}, {Color.B})")> _ 
     Friend Structure ColorName 

      Public Name As String 
      Public Color As Color 
      Public Distance As Double 

      ''' <summary> 
      ''' Returns RGB=(212,208,200) 
      ''' </summary> 
      Public Function ToRGBString() As String 
       Return String.Format("RGB=({0},{1},{2})", Color.R, Color.G, Color.B) 
      End Function 

     End Structure 

     Friend Function GetNearestNameInternal(ByVal unknownColor As Color) As ColorName 

      Dim oBestMatch As ColorName = Nothing 
      Dim nClosestDistance As Double = Double.MaxValue 

      Dim oBindingFlags As BindingFlags = _ 
       BindingFlags.DeclaredOnly Or _ 
       BindingFlags.Public Or _ 
       BindingFlags.Static 

      For Each oProperty As PropertyInfo In GetType(Color).GetProperties(oBindingFlags) 

       Dim oNamedColor As Color = DirectCast(oProperty.GetValue(Nothing, Nothing), Color) 
       Dim nDistance As Double 

       nDistance = System.Math.Sqrt(_ 
        (CInt(unknownColor.R) - oNamedColor.R)^2 + _ 
        (CInt(unknownColor.G) - oNamedColor.G)^2 + _ 
        (CInt(unknownColor.B) - oNamedColor.B)^2) 

       nDistance = System.Math.Sqrt(nDistance/3) 

       If nDistance < nClosestDistance Then 
        nClosestDistance = nDistance 
        oBestMatch.Name = oProperty.Name 
        oBestMatch.Distance = nDistance 
        oBestMatch.Color = oNamedColor 
       End If 

      Next 

      Return oBestMatch 
     End Function 

     Friend Function GetNearestKnownColorInternal(ByVal unknownColor As Color) As ColorName 

      Dim oBestMatch As ColorName = Nothing 
      Dim nClosestDistance As Double = Double.MaxValue 

      For Each sColorName As String In [Enum].GetNames(GetType(KnownColor)) 

       Dim oNamedColor As Color = Color.FromName(sColorName) 
       Dim nDistance As Double 

       nDistance = System.Math.Sqrt(_ 
        (CInt(unknownColor.R) - oNamedColor.R)^2 + _ 
        (CInt(unknownColor.G) - oNamedColor.G)^2 + _ 
        (CInt(unknownColor.B) - oNamedColor.B)^2) 

       nDistance = System.Math.Sqrt(nDistance/3) 

       If nDistance < nClosestDistance Then 
        nClosestDistance = nDistance 
        oBestMatch.Name = oNamedColor.Name 
        oBestMatch.Distance = nDistance 
        oBestMatch.Color = oNamedColor 
       End If 

      Next 

      Return oBestMatch 
     End Function 

#Region " Conditional Testing for GetNearest... Methods " 

     <Conditional("DEBUG")> _ 
     Friend Sub TestGetNearest() 

      'from immediate window 
      ' ColorExtensions.Test 
      ' 
      'Results based on "Windows XP" default theme, with the display name of "Windows XP style'. 
      ' 
      'Windows XP style 
      ' ActiveBorder, RGB=(212,208,200); LightGray, RGB=(211,211,211); ActiveBorder, RGB=(212,208,200) 
      ' ActiveCaption, RGB=(0,84,227); RoyalBlue, RGB=(65,105,225); ActiveCaption, RGB=(0,84,227) 
      ' ActiveCaptionText, RGB=(255,255,255); Transparent, RGB=(255,255,255); ActiveCaptionText, RGB=(255,255,255) 
      ' AppWorkspace, RGB=(128,128,128); Gray, RGB=(128,128,128); AppWorkspace, RGB=(128,128,128) 
      ' Control, RGB=(236,233,216); AntiqueWhite, RGB=(250,235,215); Control, RGB=(236,233,216) 
      ' ControlDark, RGB=(172,168,153); DarkGray, RGB=(169,169,169); ControlDark, RGB=(172,168,153) 
      ' ControlDarkDark, RGB=(113,111,100); DimGray, RGB=(105,105,105); ControlDarkDark, RGB=(113,111,100) 
      ' ControlLight, RGB=(241,239,226); Beige, RGB=(245,245,220); ControlLight, RGB=(241,239,226) 
      ' ControlLightLight, RGB=(255,255,255); Transparent, RGB=(255,255,255); ActiveCaptionText, RGB=(255,255,255) 
      ' ControlText, RGB=(0,0,0); Black, RGB=(0,0,0); ControlText, RGB=(0,0,0) 
      ' Desktop, RGB=(0,78,152); Teal, RGB=(0,128,128); Desktop, RGB=(0,78,152) 
      ' GrayText, RGB=(172,168,153); DarkGray, RGB=(169,169,169); ControlDark, RGB=(172,168,153) 
      ' Highlight, RGB=(49,106,197); RoyalBlue, RGB=(65,105,225); Highlight, RGB=(49,106,197) 
      ' HighlightText, RGB=(255,255,255); Transparent, RGB=(255,255,255); ActiveCaptionText, RGB=(255,255,255) 
      ' HotTrack, RGB=(0,0,128); Navy, RGB=(0,0,128); HotTrack, RGB=(0,0,128) 
      ' InactiveBorder, RGB=(212,208,200); LightGray, RGB=(211,211,211); ActiveBorder, RGB=(212,208,200) 
      ' InactiveCaption, RGB=(122,150,223); CornflowerBlue, RGB=(100,149,237); InactiveCaption, RGB=(122,150,223) 
      ' InactiveCaptionText, RGB=(216,228,248); Lavender, RGB=(230,230,250); InactiveCaptionText, RGB=(216,228,248) 
      ' Info, RGB=(255,255,225); LightYellow, RGB=(255,255,224); Info, RGB=(255,255,225) 
      ' InfoText, RGB=(0,0,0); Black, RGB=(0,0,0); ControlText, RGB=(0,0,0) 
      ' Menu, RGB=(255,255,255); Transparent, RGB=(255,255,255); ActiveCaptionText, RGB=(255,255,255) 
      ' MenuText, RGB=(0,0,0); Black, RGB=(0,0,0); ControlText, RGB=(0,0,0) 
      ' ScrollBar, RGB=(212,208,200); LightGray, RGB=(211,211,211); ActiveBorder, RGB=(212,208,200) 
      ' Window, RGB=(255,255,255); Transparent, RGB=(255,255,255); ActiveCaptionText, RGB=(255,255,255) 
      ' WindowFrame, RGB=(0,0,0); Black, RGB=(0,0,0); ControlText, RGB=(0,0,0) 
      ' WindowText, RGB=(0,0,0); Black, RGB=(0,0,0); ControlText, RGB=(0,0,0) 
      ' Transparent, RGB=(255,255,255); Transparent, RGB=(255,255,255); ActiveCaptionText, RGB=(255,255,255) 
      ' Black, RGB=(0,0,0); Black, RGB=(0,0,0); ControlText, RGB=(0,0,0) 
      ' Gray, RGB=(128,128,128); Gray, RGB=(128,128,128); AppWorkspace, RGB=(128,128,128) 
      ' Navy, RGB=(0,0,128); Navy, RGB=(0,0,128); HotTrack, RGB=(0,0,128) 
      ' White, RGB=(255,255,255); Transparent, RGB=(255,255,255); ActiveCaptionText, RGB=(255,255,255) 
      ' ButtonFace, RGB=(236,233,216); AntiqueWhite, RGB=(250,235,215); Control, RGB=(236,233,216) 
      ' ButtonHighlight, RGB=(255,255,255); Transparent, RGB=(255,255,255); ActiveCaptionText, RGB=(255,255,255) 
      ' ButtonShadow, RGB=(172,168,153); DarkGray, RGB=(169,169,169); ControlDark, RGB=(172,168,153) 
      ' GradientActiveCaption, RGB=(61,149,255); DodgerBlue, RGB=(30,144,255); GradientActiveCaption, RGB=(61,149,255) 
      ' GradientInactiveCaption, RGB=(157,185,235); LightSteelBlue, RGB=(176,196,222); GradientInactiveCaption, RGB=(157,185,235) 
      ' MenuBar, RGB=(236,233,216); AntiqueWhite, RGB=(250,235,215); Control, RGB=(236,233,216) 
      ' MenuHighlight, RGB=(49,106,197); RoyalBlue, RGB=(65,105,225); Highlight, RGB=(49,106,197) 
      ' 

      Debug.WriteLine(System.Windows.Forms.VisualStyles.VisualStyleInformation.DisplayName) 

      For Each sKnownColorName As String In [Enum].GetNames(GetType(KnownColor)) 

       Dim oBaseColor As New ColorName 

       oBaseColor.Name = sKnownColorName 
       oBaseColor.Color = Color.FromName(sKnownColorName) 

       Dim oTestColor As Color = Color.FromArgb(255, oBaseColor.Color.R, oBaseColor.Color.G, oBaseColor.Color.B) 

       Dim oNearestNamed As ColorName = GetNearestNameInternal(oTestColor) 
       Dim oNearestKnown As ColorName = GetNearestKnownColorInternal(oTestColor) 

       'results will vary due to the current display theme properties 

       If oNearestNamed.Name <> oNearestKnown.Name Then 

        Debug.Write("' ") 

        Debug.Write(oBaseColor.Name) 
        Debug.Write(", ") 
        Debug.Write(oBaseColor.ToRGBString) 
        Debug.Write("; ") 

        Debug.Write(oNearestNamed.Name) 
        Debug.Write(", ") 
        Debug.Write(oNearestNamed.ToRGBString) 
        Debug.Write("; ") 

        Debug.Write(oNearestKnown.Name) 
        Debug.Write(", ") 
        Debug.Write(oNearestKnown.ToRGBString) 

        Debug.WriteLine("") 

       End If 

      Next 

     End Sub 

     ''' <summary> 
     ''' Dump all the Is... Properties 
     ''' <example> 
     ''' Current ActiveBorder is (255, 212, 208, 200) 
     ''' Color.FromArgb(255, 212, 208, 200) 'ActiveBorder 
     ''' Color.FromName("Yellow")   '255, 255, 0 
     ''' Color.FromArgb(255, 255, 255, 0) 'Yellow 
     ''' </example> 
     ''' </summary> 
     <Extension()> _ 
     <Conditional("DEBUG")> _ 
     Friend Sub BreakOnIsProperties(ByVal color As Color) 

      Dim I As Color = color.FromArgb(color.A, color.R, color.G, color.B) 

      If I.IsEmpty Then 
       Stop 
      End If 

      If I.IsKnownColor Then 
       Stop 
      End If 

      If I.IsNamedColor Then 
       Stop 
      End If 

      If I.IsSystemColor Then 
       Stop 
      End If 

     End Sub 

#End Region 

    End Module 

End Namespace 
+0

唉!特別是當Prettify不能很好地處理VB時,這是很多代碼需要通過的。你可以使用鏈接呢? – AnthonyWJones 2010-05-04 10:47:56

+0

Silverlight的顏色(System.Windows.Media.Color)沒有IsNamedColor字段。 – eflles 2010-05-04 11:41:43

+0

@eflles:好的,但你仍然可以得到這個名字,對嗎?這仍然有效? – AMissico 2010-05-06 15:13:29