Я конвертирую из VCL в Firemonkey (FMX).
Я хочу получить значения R, G или B в переменной TAlphaColor.
Раньше я использовал функцию GetRValue (TColor). Однако GetRValue — это вызов Windows GDI.
Есть ли способ сделать это, который будет работать кросс-платформенный (в частности, Windows и Mac)?
Я нашел примеры, которые, кажется, делают это с Delphi и TAlphaColorRecs, но я не могу преобразовать код в C ++.
Вы можете использовать TAlphaColorRec
структура для считывания цветовых каналов:
TAlphaColorRec acr;
acr.Color = Color;
Byte r = acr.R;
Byte g = acr.G;
// etc.
Важной частью этого типа является union
который объявлен так:
union
{
struct
{
System::Byte B;
System::Byte G;
System::Byte R;
System::Byte A;
};
struct
{
System::Word HiWord;
System::Word LoWord;
};
struct
{
TAlphaColor Color;
};
};
Других решений пока нет …