ColorToARGB

この関数は color 型を uint 型に変換し色の ARGB 表現を取得します。ARGB カラー形式は グラフィックリソーステキスト表示に使用され、CCanvas 標準ライブラリクラスにも使用されます。

uint  ColorToARGB(
  color  clr,          // color フォーマットに変換された色
  uchar  alpha=255     // 色の透明度を管理するアルファチャンネル
  );

パラメータ

clr

[in]  color 型変数のカラー値。

alpha

[in] ARGB 形式で色を受け取るためのアルファチャンネルの値。値は 0 (前景ピクセル色は基礎ピクセル色の表示に影響しない)から 255(基本ピクセル色が完全に前景ピクセル色で置き換えられる)までです。百分率での色の透明度は (1-alpha/255)*100% のように計算されます。つまり、アルファチャンネルの小さい値は、より透明な色につながります。

戻り値

アルファ、赤、緑、青(アルファチャンネル、赤、緑、青)値が 4 つの uint 型のバイト直列で設定されている ARGB 形式で表現された色

注意事項

RGBは、コンピュータグラフィックスの画面上のピクセルの色の記述の基本に一般的に使用される形式です。基本色の名称は、赤、緑、青の色成分を設定するために使用されています。各コンポーネントは 0〜255( 16 進形式の 0x00 から 0XFF )の範囲の彩度を指定する 1 バイトで記述されています。白は全ての色を含むので 0xFFFFFF として記載されます。つまり、3 成分のそれぞれが最大値の 0xFF を持ちます。

ただし、一部のタスクでは、透明性のある色で覆われている場合の画像の外観を記述するために、色の透明度を指定する必要があります。アルファチャンネルの概念は、このような場合のために導入されています。アルファチャンネルは、RGB 形式の付加的なコンポーネントとして実装されています。ARGB 形式の構造体は下記の通りです。

ARGB

ARGB値は、一般的に、それぞれ、アルファ、赤、緑、青のチャンネルの値を表す数字の各ペアに進形式を使用して表現されます。例えば 80FFFF00 は 50.2 パーセント不透明な黄色です。0x80 は初めに 0xFF の 50.2% である 50.2% アルファ値を設定します。そして、1 番目の FF ペアは赤成分の最大値を定義します。次の FF ペアは緑成分の最大値を定義します。最後の 00 ペアは、青色成分の最小値(青の不在)を表します。緑と赤の組み合わせは、黄色です。アルファチャンネルを使用しない場合、エントリは RRGGBB の6桁に低減することが出来ます。これがアルファチャンネル値を uint 整数型で先頭ビットに格納する理由です。

16 進数は状況に応じて「 0x 」または「 # 」プレフィックスを使用して書かれます(例えば 80FFFF00、0x80FFFF00 または #80FFFF00 )。

例:

//+------------------------------------------------------------------+
//| スクリプトプログラムを開始する関数                                          |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- 透明度を設定する
  uchar alpha=0x55; // 0x55 は 55/255=21.6 % 透明度を意味する
  //--- clrBlue 色のために、ARGBへの変換を導き出す
  PrintFormat("0x%.8X - clrBlue",clrBlue);
  PrintFormat("0x%.8X - clrBlue ARGB with alpha=0x55 (transparency 21.6%%)",ColorToARGB(clrBlue,alpha));
  //--- clrGreen 色のために、ARGB への変換を導き出す
  PrintFormat("0x%.8X - clrGreen",clrGreen);
  PrintFormat("0x%.8X - clrGreen ARGB with alpha=0x55 (transparency 21.6%%)",ColorToARGB(clrGreen,alpha));
  //--- clrRed 色のために、ARGB への変換を導き出す
  PrintFormat("0x%.8X - clrRed",clrRed);
  PrintFormat("0x%.8X - clrRed ARGB with alpha=0x55 (transparency 21.6%%)",ColorToARGB(clrRed,alpha));
 }

参照

リソースResourceCreate()TextOut()color 型, char、short、int 及び long 型