ColorToARGB関数の働き・役割
ColorToARGB関数は、色の値をARGB(アルファ、赤、緑、青)の形式に変換するための関数です。
ColorToARGB関数を使うことで、色の透明度や個々の色成分を簡単に取得することができます。
※Color型についての詳細は↓の記事をご参照ください。
ARGBとは?
ARGBは、色の表現方法の一つで、アルファ、赤、緑、青の各成分で構成されます。
アルファは透明度を示し、0が完全に透明、255が完全に不透明を表します。RGBはそれぞれの色成分を示し、0から255の範囲で指定します。これにより、色とその透明度を細かく制御することが可能です。
ColorToARGB関数の引数について
ColorToARGB関数は以下の2つの引数を取ります。
uint ColorToARGB(
color clr, // 色の値
uchar alpha=255 // アルファチャンネルの値
);
- clr
- 種類: Color型
- 説明: 変換したい色の値を指定します。
- alpha
- 種類: uchar型
- 説明: 色の透明度を管理するアルファチャンネルの値(透明度を示す成分)を指定します。範囲は0から255で、0は完全に透明、255は完全に不透明を表します。
透明度は (1-alpha/255)*100% のように計算されます。アルファチャンネルの値が小さいほど、色はより透明になります。
ColorToARGB関数の戻り値について
ColorToARGB関数はuint型の値を返します。
戻り値はARGB形式で、32ビット(4バイト)の整数として表されます。
この整数は、上位8ビットがアルファ値、次の8ビットが赤、さらに次の8ビットが緑、下位8ビットが青の値となります。
ColorToARGB関数を使う際の注意点
RGBは、コンピュータグラフィックスで画面上のピクセル(デジタル画像を構成する最小の単位)の色を記述するために一般的に使用される形式です。
RGBは赤、緑、青の3つの色成分で構成されており、各成分は0から255(16進数では0x00から0xFF)の範囲で彩度を指定します。例えば、白は全ての色成分が最大値の0xFFを持つため、0xFFFFFFと表記されます。
ただし、透明性のある色を扱う必要がある場合、アルファチャンネルが使われます。
アルファチャンネルは色の透明度を示す成分で、RGB形式に追加されます。
ARGB形式は、アルファ、赤、緑、青の順に成分を持ち、透明度を考慮した色の表示が可能です。
ARGB値は、アルファ、赤、緑、青のチャンネルの値を8ビットずつ使用して表現します。
各チャンネルは0から255の範囲で、不透明度や色成分を示します。例えば、80FFFF00
は50.2%の不透明な黄色です。0x80
はアルファチャンネルの値で、50.2%の透明度を意味します。次のFF
は赤、次のFF
は緑、最後の00
は青を表します。16進数は0x
または#
を使って表記されます(例: 0x80FFFF00
や #80FFFF00
)。
ARGB値の構造
Bit位置 | 31-24 | 23-16 | 15-8 | 7-0 |
---|---|---|---|---|
チャンネル | Alpha | Red | Green | Blue |
それぞれのチャンネル(アルファ、赤、緑、青)は8ビットの領域を持ち、取り得る範囲は0から255です。16進数で表すと、各チャンネルは2桁になります。80FFFF00
の場合、先頭から2桁ずつ分けると、80
がアルファ、FF
が赤、次のFF
が緑、00
が青を表しています。
※16進数についての詳細は↓の記事をご参照ください。
ColorToARGB関数を使ったサンプルコード
以下にColorToARGB関数を使用したサンプルコードを示します。このコードでは、指定した色の値をARGB形式に変換し、各成分をエキスパートログに出力します。
//+------------------------------------------------------------------+
//| スクリプトプログラムを開始する関数 |
//+------------------------------------------------------------------+
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 (透明度 21.6%%)",ColorToARGB(clrBlue,alpha));
//--- clrGreen 色のために、ARGB への変換を導き出す
PrintFormat("0x%.8X - clrGreen",clrGreen);
PrintFormat("0x%.8X - clrGreen ARGB with alpha=0x55 (透明度 21.6%%)",ColorToARGB(clrGreen,alpha));
//--- clrRed 色のために、ARGB への変換を導き出す
PrintFormat("0x%.8X - clrRed",clrRed);
PrintFormat("0x%.8X - clrRed ARGB with alpha=0x55 (透明度 21.6%%)",ColorToARGB(clrRed,alpha));
}
サンプルコードに使われた関数や文法要素の簡単な解説
PrintFormat関数は、指定された書式に従って文字列をフォーマットし、エキスパートログに出力するために使用されます。上記のコードでは、色の値とARGB形式に変換された結果を表示しています。
色の定数lrBlue, clrGreen, clrRedはMQL5で事前定義された色の定数です。
clrBlueは青色、clrGreenは緑色、clrRedは赤色を表します。これらの定数を使うことで、特定の色を簡単に指定することができます。
uchar型は、0から255までの値を取ります。透明度の値を指定するために使用されます。
ColorToARGB関数は、色の値をARGB形式に変換するために使用されます。
引数として色の値とアルファ値を取り、戻り値としてARGB形式の値を返します。上記のコードでは、青、緑、赤の色を指定してARGB形式に変換しています。
PrintFormat関数の書式指定子「0x%.8X」の解説
PrintFormat関数の「0x%.8X」という記述は、フォーマット指定子の一部です。このフォーマット指定子は、整数値を16進数形式で表示するために使われます。
- 0x は、出力する数値が16進数であることを示すプレフィックス(前につける記号)です。
- % は、フォーマット指定子の開始を示します。
- .8 は、表示する数値が少なくとも8桁であることを示します。不足する桁はゼロで埋められます。
- X は、数値を大文字の16進数形式で表示することを示します。