Struct Color
Represents a 24-bit color encoded in ARGB32 format.
The RGB components define the color identity (what color it is), while the alpha channel defines rendering intent (how transparent it should be when drawn).
[JsonConverter(typeof(ColorJsonConverter))]
public readonly struct Color : ISpanParsable<Color>, IParsable<Color>, IUtf8SpanParsable<Color>, ISpanFormattable, IFormattable, IUtf8SpanFormattable, IMinMaxValue<Color>, IEquatable<Color>
- Implements
- Inherited Members
Remarks
When matching colors to standard color names (e.g., via GetColorName(Color)), the alpha channel is ignored. This means colors with the same RGB values but different alpha values will resolve to the same color name. This design supports transparency features while maintaining semantic color identity.
While Terminal.Gui does not currently support alpha blending during rendering, the alpha channel is used to indicate rendering intent:
<ul><li>Alpha = 0: Fully transparent (don't render)</li><li>Alpha = 255: Fully opaque (normal rendering)</li><li>Other values: Reserved for future alpha blending support</li></ul>
Constructors
- Color(int)
Initializes a new instance of the Color class with an encoded signed 32-bit color value in ARGB32 format.
- Color(int, int, int, int)
Initializes a new instance of the Color struct using the supplied component values.
- Color(string)
Initializes a new instance of the Color color from string. See TryParse(string, out Color?) for details.
- Color(uint)
Initializes a new instance of the Color class with an encoded unsigned 32-bit color value in ARGB32 format.
- Color(in ColorName16)
Initializes a new instance of the Color color from a legacy 16-color named value.
- Color(in StandardColor)
Initializes a new instance of the Color color from a value in the StandardColor enum.
Fields
- A
The value of the alpha channel component
- B
The value of the blue color component.
- Black
The black color.
- Blue
The blue color.
- BrightBlue
The bright bBlue color.
- BrightCyan
The bright cyan color.
- BrightGreen
The bright green color.
- BrightMagenta
The bright magenta color.
- BrightRed
The bright red color.
- BrightYellow
The bright yellow color.
- Cyan
The cyan color.
- DarkGray
The dark gray color.
- G
The value of the green color component.
- Gray
The gray color.
- Green
The green color.
- Magenta
The magenta color.
- None
No color (alpha = 0). When used in an Attribute, the terminal's default foreground or background color is used instead of an explicit color. This allows the terminal's native background (including any transparency or acrylic effects) to show through.
- R
The value of the red color component.
- Red
The red color.
- White
The White color.
- Yellow
The yellow color.
Properties
- Colors16
Gets or sets the 3-byte/6-character hexadecimal value for each of the legacy 16-color values.
Methods
- GetAnsiColorCode()
Gets the Color using a legacy 16-color ColorName16 value. get will return the closest 16 color match to the true color when no exact value is found.
- GetBrighterColor(double, bool?)
Returns a "highlighted" version of this color — visually more prominent against the given background context.
- GetClosestNamedColor16()
Gets the Color using a legacy 16-color ColorName16 value. get will return the closest 16 color match to the true color when no exact value is found.
- GetDimmerColor(double, bool?)
Returns a "dimmed" version of this color appropriate for the given background context. On dark backgrounds, dims by reducing lightness (darker). On light backgrounds, dims by increasing lightness (lighter/washed out), moving the color toward the background.
- IsClosestToNamedColor16(in ColorName16)
Determines if the closest named Color to this is the provided
namedColor.
- IsDarkColor()
Returns true if this color is "dark" (HSL lightness < 0.5).
- ToString()
Converts the color to a string representation.
- ToString(string?, IFormatProvider?)
Returns a string representation of the current Color value, according to the provided
formatStringand optionalformatProvider.
- TryParse(string, out Color?)
Converts the provided string to a new Color instance.
Operators
- explicit operator Vector3(Color)
Implicit conversion from Color to Vector3 via Vector3(float, float, float) where ( X, Y, Z) is (R,G,B).
- implicit operator Color(int)
Implicit conversion from int to Color, via the Color(int) costructor.
- implicit operator Color(Vector4)
Implicit conversion from Vector4 to Color, where (X, Y, Z, W) is (A,R, G,B), via Color(int, int, int, int).
- implicit operator Color(uint)
Implicit conversion from uint to Color, via the Color(uint) costructor.
- implicit operator int(Color)
Implicit conversion from Color to int by returning the value of the Rgba field.
- implicit operator uint(Color)
Implicit conversion from Color to uint by returning the value of the Argb field.
- implicit operator Color(ColorName16)
Implicit conversion from Terminal.Gui.Drawing.Color.GetClosestNamedColor16(Terminal.Gui.Drawing.Color) to Color via lookup from Terminal.Gui.Drawing.ColorExtensions.ColorName16ToColorMap.
Explicit Interface Implementations
- Parse(ReadOnlySpan<char>, IFormatProvider?)
Converts the provided ReadOnlySpan<T> of char to a new Color value.
- TryParse(ReadOnlySpan<char>, IFormatProvider?, out Color)
Converts the provided ReadOnlySpan<T> of char to a new Color value.