как я могу найти имена и значения RGB цветов в палитре .net - PullRequest
2 голосов
/ 08 декабря 2011

У меня есть диаграмма, показывающая данные как часть приложения форм vb.net.Объект Chart создает действительно красивую картинку, но мне нужно, чтобы она соответствовала цветовой схеме остального интерфейса.Как мне получить значения RGB для палитры?

Debug.Print(Chart1.Palette.Chocolate.WHAT ARE THE RGB COLORS??!)

Редактировать 1

Примечание. Шоколад - это и название цвета, и название .net Palette. Пост выше относится к Chocolate the Palette,который содержит несколько цветов.

Ответы [ 2 ]

4 голосов
/ 08 декабря 2011

Структура System.Drawing.Color имеет статические свойства с веб-цветами:

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]"

Палитра - это выбранный набор цветов.Это палитра:

enter image description here

Это еще одна палитра:

enter image description here


Наконец я нашел ответ с помощью.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.

1 голос
/ 08 декабря 2011

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 ...
...