【问题标题】:How can I get the RGB components of a TAlphaColor in C++ Builder XE5 cross-platform?如何在 C++ Builder XE5 跨平台中获取 TAlphaColor 的 RGB 组件?
【发布时间】:2014-05-03 07:19:27
【问题描述】:

我正在从 VCL 转换为 Firemonkey (FMX)。

我想在 TAlphaColor 变量中获取 R、G 或 B 值。

我曾经使用函数GetRValue(TColor)。但是,GetRValue 是一个 Windows GDI 调用。

有没有一种方法可以跨平台(特别是 Windows 和 Mac)工作?

我找到了似乎可以使用 Delphi 和 TAlphaColorRecs 执行此操作的示例,但我无法将代码转换为 C++。

【问题讨论】:

    标签: c++ c++builder firemonkey


    【解决方案1】:

    您可以使用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;
        };
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      • 1970-01-01
      • 2014-02-28
      • 1970-01-01
      相关资源
      最近更新 更多