HSP命令講座 <color命令>

Last Update : 2009/02/xx

PR HSPの書籍 『逆引き HSP3プログラミング事典 応用編』

color命令 (色の指定)

 HSPで色(カラー)を指定する命令です。命令名の由来はそのまま「color」から。

 color 赤の輝度, 緑の輝度, 青の輝度

 第1パラメータには赤(red)の輝度、第2パラメータには緑(green)の輝度、第3パラメータには青(blue)の輝度の数値を指定します。範囲はそれぞれ0〜255です。省略した場合は0を指定したことになります。RGB値はいわゆる「光の三原色」です。

 逆に指定されてる色をスクリプトから取得するには、ginfo関数(タイプ16〜17)か、マクロ定義のginfo_r、ginfo_g、ginfo_bを利用します。

◆ 注意点!
 この命令を使って色を反映させることができるのは、文字を描画するmes命令(print命令)、1ドットの点を描画するpset命令、1本線を描画するline命令、四角形を描画するboxf命令といったところです。HSP3では、円を描画するcircle命令、回転した四角形を描画するgrect命令も含まれます。
 ボタン(button命令)、チェックボックス(chkbox命令)、リストボックス(listbox命令)、コンボボックス(combox命令)、入力ボックス(input命令)、メッセージボックス(mesbox命令)のようなオブジェクトの背景色や文字色、各種ダイアログボックスを表示するdialog命令の文字色はいっさい指定できません。
 ただ、オブジェクトに関しては、Win32 API関数を駆使して実現できるものもあります。(→ 参照、HSP3 あれこれ オブジェクト編

↑TOP↑

サンプルコード

 適当なサンプルスクリプト。文字を描画するmes命令を利用して表示色を指定します。背景色を変えたい場合はboxf命令を利用します。

	color 255
	mes "あか"

	color , 255
	mes "みどり"

	color , , 255
	mes "青"
	color
	mes "くろ"

	boxf 0, 50, 50, 100

	color 255, 255, 255
	pos , 50
	mes "しろ"

 グラデーション効果で図形の描画命令を利用する。

//	グラデーション効果 (by Kpan)

	repeat 256
		color 255 - cnt
		line 0, cnt, 100, cnt

		color , 255 - cnt
		line 100, cnt, 200, cnt

		color , , 255 - cnt
		line 200, cnt, 300, cnt

		wait 1
	loop

	repeat 50
		color 255 - cnt * 4
		circle 0 + cnt, 300 + cnt, 100 - cnt, 400 - cnt

		color , 255 - cnt * 4
		circle 100 + cnt, 300 + cnt, 200 - cnt, 400 - cnt

		color , , 255 - cnt * 4
		circle 200 + cnt, 300 + cnt, 300 - cnt, 400 - cnt

		wait 1
	loop

↑TOP↑

サンプルコード (応用)

 文字列の一部のフレーズの文字色を別のものに変更したい場合は、pos命令で描画位置を変更して、複数回に分けてmes命令を行う形になります。ginfo関数のタイプ14・15(マクロ定義でginfo_mesx・ginfo_mesy)は文字列の出力サイズ、タイプ22・23(マクロ定義でginfo_cx・ginfo_cy)はカレントポジションが返るので、これをpos命令に反映させます。

//	一部のフレーズの文字色を指定 (by Kpan)

	pos 100, 100
	mes "こんにちは。"

	posisionX = ginfo(22) + ginfo(14) ; X方向の出力サイズ+カレントポジション
	posisionY = ginfo(23) - ginfo(15) ; Y方向のカレントポジション−出力サイズ
	pos posisionX, posisionY

	color $FF
	mes "HSPプログラミング"

	posisionX += ginfo(14)
	pos posisionX, posisionY

	color
	mes "の世界へようこそ。"
//	一部のフレーズの文字色を指定、もっと実践的なものに (by Kpan)

	font "MS ゴシック", 30, 16

;	天気の色用 配列変数
	clr_tenki.0 = $FF, $00, $00 ; 赤
	clr_tenki.3 = $00, $00, $FF ; 青
	clr_tenki.6 = $80, $80, $80 ; グレー
;	天気の文字用 配列変数
	str_tenki = "はれ", "あめ", "くもり"

	combox value, 100, ""+str_tenki.0+"\n"+str_tenki.1+"\n"+str_tenki.2+""

	button "天気", *change
	stop

*change
	redraw 0

	color $FF, $FF, $FF
	boxf

	pos 100, 100
	color
	if rnd(2) {
		mes "ハイ、今日は"
	} else {
		mes "昨日は"
	}

	posisionX = ginfo(22) + ginfo(14)
	posisionY = ginfo(23) - ginfo(15)
	pos posisionX, posisionY

	color clr_tenki(value * 3), clr_tenki(value * 3 + 1), clr_tenki(value * 3 + 2)
	mes str_tenki(value)

	posisionX += ginfo(14)
	pos posisionX, posisionY

	color
	mes "だよ〜ん。"

	redraw

↑TOP↑

〜HSP3 あれこれ〜
ウィンドウ | オブジェクト | ファイル | フォルダ | キーボード | マウス | メニュー | システム | 文字列 | COM | その他

Copyright c 2005-2010 ゲーム作成ソフトHSPの情報をいろいろと Let's HSP!. All rights reserved.