C # Convert delphi TColor to color (Hex)

enter image description here

These numbers are stored in the database. They come from Delphi code. Although I assume that they follow some standard. I triedColor.FromArgb(255);

But I know that the first one is RED (on the delphi side), where, like in ASP.NET, it thinks its blue Color [A=0, R=0, G=0, B=255]

I want these numbers to be in hexadecimal format. That is # 000000, # FFFF99, etc. Etc.

Does anyone know how to convert these integers (see DB image) to hexadecimal.

+5
source share
2 answers

Color Delphi ( TColor) XXBBGGRR, if not from a palette or special color.

. ( ). , Christian.K, .

, - :

var color = Color.FromArgb(0xFF, c & 0xFF, (c >> 8) & 0xFF, (c >> 16) & 0xFF);

hex,:

string ColorToHex(Color color)
{
    return string.Format("#{0:X2}{1:X2}{2:X2}",
        color.R, color.G, color.B);
}

( ) , 0x80000000.

.

Color DelphiColorToColor(uint delphiColor)
{
    switch((delphiColor >> 24) & 0xFF)
    {
        case 0x01: // Indexed
        case 0xFF: // Error
            return Color.Transparent;

        case 0x80: // System
            return Color.FromKnownColor((KnownColor)(delphiColor & 0xFFFFFF));

        default:
            var r = (int)(delphiColor & 0xFF);
            var g = (int)((delphiColor >> 8) & 0xFF);
            var b = (int)((delphiColor >> 16) & 0xFF);
            return Color.FromArgb(r, g, b);
    }
}

void Main()
{
    unchecked
    {
        Console.WriteLine(DelphiColorToColor((uint)(-2147483646)));
        Console.WriteLine(DelphiColorToColor(
                (uint)KnownColor.ActiveCaption | 0x80000000
            ));
        Console.WriteLine(DelphiColorToColor(0x00FF8000));
    }
}
+20

, base-10 Delphi TColor.

, Delphi (, GetRValue), , . - # .

, .

string.Format("#{0:X2}{1:X2}{2:X2}", redComponent, greenComponent, blueComponent);

, , , .

UPDATE . , / delphi. TColor -like, :

string.Format("#{0:X2}{1:X2}{2:X2}", blueComponent, greenComponent, redComponent);
+3

All Articles