【MQL5】ColorToARGB関数について

MQL5リファレンス
スポンサーリンク

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値の構造

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進数形式で表示することを示します。
タイトルとURLをコピーしました