Это альфа-канал управления цветом. Он хранится в 8 бит, как и красные, зеленые и синие значения компонентов. Так же, как красный, зеленый и синий диапазоны от 0 (0x00) до 255 (0xFF), так может быть и альфа-канал.
Цветовые значения с альфа-каналом, в действительности, 32 бита длиной (4 байта × 8 бит/байт), вместо обычных 24-разрядных цветов, которые вы, вероятно, использовать для из Интернета.
Альфа-канал обеспечивает эффекты прозрачности. Другими словами, он контролирует, как цвет смешивается с фоном. Значение альфа-канала 0 (0x00) означает, что цвет полностью прозрачен - в принципе, цвета нет. Значение альфа-канала 255 (0xFF) означает, что цвет полностью непрозрачен. 24-битные цвета всегда полностью непрозрачны, потому что у них нет альфа-канала.
Это означает, что # 224466 является точно такого же цвета, как # FF224466.
Я понимаю, но я не могу использовать # cccc00ff как цвет, потому что это совершенно другой цвет для # cccc00.
Да, это разные цвета, потому что вы смешали положение байта. Альфа-канал всегда хранится в высоком байте (это дублет, который появляется первым, когда записывается в шестнадцатеричной нотации).
Порядок: #AARRGGBB. Значение альфа-канала сохраняется в старшем байте, красный - следующий, затем зеленый и, наконец, синий в младшем байте. В этом порядке нет ничего святого, но он стал de facto. (Вы также иногда можете найти #AABBGGRR.)
Если вам не нужна информация о альфа-каналах и вы хотите просто работать с 24-битными цветами, вы можете обрезать старший байт, который содержит значение альфа-канала. Или вы можете просто сохранить это в базе данных. Это не имеет значения, поскольку они представляют один и тот же цвет.
Вы можете разобрать значения от себя, не обращая внимания на значение (я) альфа-канала, в случае необходимости:
String RgbColorToHexString(Color clr)
{
return string.Format("#{0:X2}{1:X2}{2:X2}",
clr.R,
clr.G,
clr.B);
}
Color HexStringToRgbColor(String str)
{
int argb = Int32.Parse(str.Replace("#", ""), NumberStyles.HexNumber);
return Color.FromArgb((argb & 0x00FF0000) >> 16, /* red component */
(argb & 0x0000FF00) >> 8, /* green component */
(argb & 0x000000FF)); /* blue component */
}
не уровень прозрачности? как rgba (r, g, b, a)? –
Я не уверен, что вы имеете в виду. – rbhat
Я имею в виду альфа-канал цвета, это не 4 часть –