как я могу найти имена и значения RGB цветов в палитре .net

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

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

Изменить 1

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


person bernie2436    schedule 08.12.2011    source источник


Ответы (2)


Структура 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]"

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

введите здесь описание изображения

Это другая палитра:

введите здесь описание изображения


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

Палитра оттенков серого определяется: gray value = 200 - (i * 11), где i находится в диапазоне от 0 до 15.

person Olivier Jacot-Descombes    schedule 08.12.2011
comment
Спасибо, Оливье. Итак, как мне распечатать все цвета в палитре? - person bernie2436; 08.12.2011
comment
Если вы говорите о ChartColorPalette, кажется, нет возможности перебирать цвета. Однако в статье Настройка Microsoft Chart Цвета серии показывает изображение цветов различных палитр диаграмм. - person Olivier Jacot-Descombes; 08.12.2011
comment
Я добавил окончательный ответ (РЕДАКТИРОВАТЬ № 3), в котором показаны цвета, используемые в палитрах диаграмм. - person Olivier Jacot-Descombes; 08.12.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 ...
person George Johnston    schedule 08.12.2011
comment
к сожалению, шоколад - это палитра из нескольких цветов. Я думаю, мой вопрос можно перефразировать так: как мне указать цвета в палитре? - person bernie2436; 08.12.2011
comment
Спасибо, Джордж. Я использовал этот метод для печати цветов RGB, соответствующих цвету, отображаемому на моем экране. Но я немного путаюсь между цветом и палитрой. Кажется, что в палитре много цветов: msdn.microsoft.com/en-us/library/ - person bernie2436; 08.12.2011
comment
Палитра — это выбранный набор цветов. - person Olivier Jacot-Descombes; 08.12.2011
comment
@ akh2103 Я думаю, вас смущает тот факт, что есть предопределенный цвет RGB с именем Шоколад, а также цветовая палитра с именем Шоколад. Это не одно и то же. Вместо шоколада рассмотрите цветовую палитру EarthTones. Не существует цвета с названием EarthTones. Где-то в системе есть список значений цветов RGB, связанных с палитрой EarthTones. Похоже, вы хотите перечислить все цвета RGB, связанные с цветовой палитрой. - person dthorpe; 08.12.2011