定義は System.UITypes にあります。
TColor = -$7FFFFFFF-1..$7FFFFFFF;
各バイトの並びは BBGGRR となっています。
いわゆる RGB の並びにはなっていません。
Windows の COLORREF 型が BBGGRR になっているためだと思われます。
例えば↓こうなります。
赤 | $0000FF |
黄色 | $00FFFF |
最上位は特別なフラグです。
最上位に $FF が入っていると Windows の設定色を示します。
例えば↓こうなっています。
clWindow | $FF000005 |
clBtnFace | $FF00000F |
他にもいくつか特別な色があります。
これらの特別な色は Vcl.Graphics.ColorToRGB; を使えば BGR 形式に変換できます。
ColorToRGB という名前ですが返ってくるのは TColor と同じ並びの BGR 形式です。
なお、RGB 形式にするのは下記の様にバイトを変換する関数が必要です。
function BGRtoRGB(const iColor: TColor): LongInt;beginResult := ColorToRGB(iColor);Result :=RGB((Result and $ff0000) shr 16,(Result and $00ff00) shr 8,(Result and $0000ff) shr 0);end;
Winapi.Windows.GetRValue などを使う方法もあります。
FMX の色指定は TAlphaColor です。
これについては、次回!
0 件のコメント:
コメントを投稿