RGBToColor

タグ: ,

引数に指定された赤成分、緑成分、青成分からColor値を求めます。

構文
RGBToColor( r, g, b )
引数
r
赤成分
g
緑成分
b
青成分
戻値
Color値

プログラム

//////////////////////////////////////////////////
// 【引数】
//   r : 赤成分 
//   g : 緑成分 
//   b : 青成分 
// 【戻値】
//   Color値 
//////////////////////////////////////////////////
FUNCTION RGBToColor(r, g, b)
	RESULT = r + g * 256 + b * 65536
FEND

プログラム実行例

指定した色の反転色を求める

DIM color = invertedColor(RGBToColor($e4, $b7, $d8))
DIM rgb = colorToRGB(color)

arrayMap("decToHex(%val%)", rgb)
PRINT "$" + JOIN(rgb, "")

//////////////////////////////////////////////////
// 【引数】
//   callback : 配列の各要素に適用するコールバック関数 
//   array : コールバック関数を適用する配列 
// 【戻値】
//   callback関数を適用した後、 適用後の要素を含む配列 
//////////////////////////////////////////////////
PROCEDURE arrayMap(callback, var array[])
	DIM tmp[RESIZE(array)]
	DIM n = 0
	FOR %val% IN array
		tmp[n] = EVAL(callback)
		n = n + 1
	NEXT
	RESIZE(array, RESIZE(tmp))
	FOR n = 0 TO RESIZE(tmp)
		array[n] = tmp[n]
	NEXT
FEND

//////////////////////////////////////////////////
// 【引数】
//   color : Color値 
// 【戻値】
//   赤成分、緑成分、青成分を格納した配列 
//////////////////////////////////////////////////
FUNCTION colorToRGB(color)
	DIM array[2]
	array[0] = color AND $FF
	array[1] = (color AND $FF00) / $100
	array[2] = (color AND $FF0000) / $10000
	RESULT = SLICE(array)
FEND

//////////////////////////////////////////////////
// 【引数】
//   dec : 10進数 
// 【戻値】
//   16進数に変換した値 
//////////////////////////////////////////////////
FUNCTION decToHex(dec)
	RESULT = FORMAT(VAL(dec), 0, -1)
FEND

//////////////////////////////////////////////////
// 【引数】
//   color : Color値 
// 【戻値】
//   反転色 
//////////////////////////////////////////////////
FUNCTION invertedColor(color)
	DIM array = colorToRGB(color)
	arrayMap(255 + " - %val%", array)
	RESULT = RGBToColor(array[0], array[1], array[2])
FEND

//////////////////////////////////////////////////
// 【引数】
//   r : 赤成分 
//   g : 緑成分 
//   b : 青成分 
// 【戻値】
//   Color値 
//////////////////////////////////////////////////
FUNCTION RGBToColor(r, g, b)
	RESULT = r + g * 256 + b * 65536
FEND
  1. invertedColor
  2. RGBToColor
  3. arrayMap
  4. decToHex
  5. JOIN
結果
$1B4827

Was this post helpful?

関連記事

invertedColor
引数に指定したColor値の反転色を返します。
colorToRGB
Color値を赤成分、緑成分、青成分に変換し配列で返します。
PEEKCOLOR
PEEKCOLOR関数は、指定座標の色を取得する関数です。
CHKIMG
指定画像が画面上にあるかチェックしあればその情報を返します。
complementaryColor
引数に指定したColor値の補色を返します。
colorToBGR
Color値を青成分、緑成分、赤成分に変換し配列で返します。
BGRToColor
引数に指定された青成分、緑成分、赤成分からColor値を求めます。