我有一个图表,显示数据作为vb.net窗体应用程序的一部分。图表对象制作了一幅非常漂亮的图片,但我需要它来匹配UI其余部分的配色方案。如何获得调色板的RGB值?
Debug.Print(Chart1.Palette.Chocolate.WHAT ARE THE RGB COLORS??!)编辑1
注意:巧克力既是颜色的名称,也是.net调色板的名称,上面的帖子是指巧克力调色板,它包含多种颜色。
发布于 2011-12-08 18:06:24
结构System.Drawing.Color具有静态属性,并具有webcolors:
Color c = System.Drawing.Color.Chocolate;
int r = c.R;
int g = c.G;
int b = c.B;这将返回颜色名称:
foreach (string colorName in Enum.GetNames(typeof(System.Drawing.KnownColor))) {
Console.WriteLine(colorName);
}如果颜色是已知颜色,则ToString()方法System.Drawing.Color将返回颜色名称,否则为A、R、G、B值:
System.Drawing.Color.Chocolate.ToString() --> "Color [Chocolate]"
System.Drawing.Color.FromArgb(254).ToString() --> "Color [A=0, R=0, G=0, B=254]"调色板是一组选定的颜色。这是一个调色板:

这是另一个调色板:

最后,我通过使用.NET Reflector找到了答案:在System.Web.UI.DataVisualization.Charting.Utilities名称空间中,有一个内部静态类ChartPaletteColors。因为它是内部的,所以你不能访问它。但是反光镜显示了如何初始化调色板。由此,我得到了以下调色板:
Berry = { BlueViolet, MediumOrchid, RoyalBlue, MediumVioletRed, Blue, BlueViolet, Orchid, MediumSlateBlue, ARGB(0xc0, 0, 0xc0), MediumBlue, Purple }
BrightPastel = { ARGB(0x41, 140, 240), ARGB(0xfc, 180, 0x41), ARGB(0xe0, 0x40, 10), ARGB(5, 100, 0x92), ARGB(0xbf, 0xbf, 0xbf), ARGB(0x1a, 0x3b, 0x69), ARGB(0xff, 0xe3, 130), ARGB(0x12, 0x9c, 0xdd), ARGB(0xca, 0x6b, 0x4b), ARGB(0, 0x5c, 0xdb), ARGB(0xf3, 210, 0x88), ARGB(80, 0x63, 0x81), ARGB(0xf1, 0xb9, 0xa8), ARGB(0xe0, 0x83, 10), ARGB(120, 0x93, 190) }
Chocolate = { Sienna, Chocolate, DarkRed, Peru, Brown, SandyBrown, SaddleBrown, ARGB(0xc0, 0x40, 0), Firebrick, ARGB(0xb6, 0x5c, 0x3a) }
Default = { Green, Blue, Purple, Lime, Fuchsia, Teal, Yellow, Gray, Aqua, Navy, Maroon, Red, Olive, Silver, Tomato, Moccasin }
Earth = { ARGB(0xff, 0x80, 0), DarkGoldenrod, ARGB(0xc0, 0x40, 0), OliveDrab, Peru, ARGB(0xc0, 0xc0, 0), ForestGreen, Chocolate, Olive, LightSeaGreen, SandyBrown, ARGB(0, 0xc0, 0), DarkSeaGreen, Firebrick, SaddleBrown, ARGB(0xc0, 0, 0) }
Excel = { ARGB(0x99, 0x99, 0xff), ARGB(0x99, 0x33, 0x66), ARGB(0xff, 0xff, 0xcc), ARGB(0xcc, 0xff, 0xff), ARGB(0x66, 0, 0x66), ARGB(0xff, 0x80, 0x80), ARGB(0, 0x66, 0xcc), ARGB(0xcc, 0xcc, 0xff), ARGB(0, 0, 0x80), ARGB(0xff, 0, 0xff), ARGB(0xff, 0xff, 0), ARGB(0, 0xff, 0xff), ARGB(0x80, 0, 0x80), ARGB(0x80, 0, 0), ARGB(0, 0x80, 0x80), ARGB(0, 0, 0xff) }
Fire = { Gold, Red, DeepPink, Crimson, DarkOrange, Magenta, Yellow, OrangeRed, MediumVioletRed, ARGB(0xdd, 0xe2, 0x21) }
Light = { Lavender, LavenderBlush, PeachPuff, LemonChiffon, MistyRose, Honeydew, AliceBlue, WhiteSmoke, AntiqueWhite, LightCyan }
Pastel = { SkyBlue, LimeGreen, MediumOrchid, LightCoral, SteelBlue, YellowGreen, Turquoise, HotPink, Khaki, Tan, DarkSeaGreen, CornflowerBlue, Plum, CadetBlue, PeachPuff, LightSalmon }
SeaGreen = { SeaGreen, MediumAquamarine, SteelBlue, DarkCyan, CadetBlue, MediumSeaGreen, MediumTurquoise, LightSteelBlue, DarkSeaGreen, SkyBlue }
SemiTransparent = { ARGB(150, 0xff, 0, 0), ARGB(150, 0, 0xff, 0), ARGB(150, 0, 0, 0xff), ARGB(150, 0xff, 0xff, 0), ARGB(150, 0, 0xff, 0xff), ARGB(150, 0xff, 0, 0xff), ARGB(150, 170, 120, 20), ARGB(80, 0xff, 0, 0), ARGB(80, 0, 0xff, 0), ARGB(80, 0, 0, 0xff), ARGB(80, 0xff, 0xff, 0), ARGB(80, 0, 0xff, 0xff), ARGB(80, 0xff, 0, 0xff), ARGB(80, 170, 120, 20), ARGB(150, 100, 120, 50), ARGB(150, 40, 90, 150) }GrayScale调色板由:gray value = 200 - (i * 11)确定,其中i从0到15不等。
发布于 2011-12-08 18:00:06
Chocolate在System.Drawing.KnownColor枚举中。因此,您可以执行以下操作以获得ARGB值。
Dim c As Color = Color.FromKnownColor(KnownColor.Chocolate)
Byte a = c.A
Byte r = c.R
Byte g = c.G
Byte b = c.B或者简单地说,
Color.FromKnownColor(KnownColor.Chocolate).A ...https://stackoverflow.com/questions/8435409
复制相似问题