〜 グラフィック 〜
テキスト装飾

描画テキスト位置をズラすことで、擬似的に浮き上がったように見せたり、
外枠の付いた袋文字等を表示することができます。
ここで紹介するモジュールは、表示テキストとズラす方向・量と補助部分の色ほ指定するだけで
後は勝手にやってくれるものです。
補助部分の色とは、「メインとなるテキスト部分」の周りのズラした時に出来る箇所、
袋文字で言えば、中心のテキスト部分がメインで、外枠になる色が補助部分となります。
1回のズラす量が大きいと、隙間が出来てしまう恐れがありますので、
大きなフォントや太字フォントを使用していない場合は、1回のズラす量は±2以内にする方がよいでしょう。
	

decmes 対象文字列, X移動量, Y移動量, 繰り返し数, 赤輝度, 青輝度, 緑輝度
対象文字列装飾を施す文字列または文字列型変数を指定する。
X移動量X方向の移動量を指定する。マイナスなら右に、プラスなら左に補助色による枠が出来る。
尚、XY共に移動量0ならば袋文字とする。
Y移動量Y方向の移動量を指定する。マイナスなら下に、プラスなら上に補助色による枠が出来る。
尚、XY共に移動量0ならば袋文字とする。
繰り返し数補助色による外枠の太さを指定する。
赤輝度補助色赤輝度を指定する。
青輝度補助色青輝度を指定する。
緑輝度補助色緑輝度を指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#module
#deffunc decmes str, int, int, int, int, int, int
	mref msg, 32 : mref x, 1 : mref y, 2 : mref rep, 3 : mref r, 4 : mref g, 5 : mref b, 6
	mref bmscr, 67
	cr = bmscr.40 & 255       // カレントカラー赤輝度
	cg = bmscr.40 >> 8 & 255  // カレントカラー青輝度
	cb = bmscr.40 >> 16 & 255 // カレントカラー緑輝度
	// 1回以上繰り返す場合
	if rep > 0 {
		if r >= 0 & (g>= 0) & (b >= 0) : color r, g, b
		// 影(3D)文字
		if x | y {
			repeat rep
			  csrxt = csrx : csryt = csry
			  pos csrx, csry : mes msg
			  pos csrxt + x, csryt + y
			loop
		// 袋文字
		} else {
			csrxt = csrx : csryt = csry
			repeat (rep * 2 + 1) * (rep * 2 + 1)
			  pos cnt \ (rep * 2 + 1) + csrxt, cnt / (rep * 2 + 1) + csryt : mes msg
			loop
			pos rep + csrxt, rep + csryt
		}
	}
	color cr, cg, cb
	pos csrx, csry : mes msg
	return
#global

	font "MS 明朝", 64, 1
	redraw 0
	color 255
	pos 150, 50 : decmes "てすと。", 2, 1, 5, 150, 50, 50
	color ,255
	pos 300, 160 : decmes "袋文字列!", , , 2, , 100
	color , 100, 255
	pos 80, 350 : decmes "ちょ〜浮出しぃ", 1, -2, 30, 50, 50, 100
	redraw 1
	stop

decmes 対象文字列, X移動量, Y移動量, 繰り返し数, 赤輝度, 青輝度, 緑輝度
対象文字列装飾を施す文字列または文字列型変数を指定する。
X移動量X方向の移動量を指定する。マイナスなら右に、プラスなら左に補助色による枠が出来る。
尚、XY共に移動量0ならば袋文字とする。
Y移動量Y方向の移動量を指定する。マイナスなら下に、プラスなら上に補助色による枠が出来る。
尚、XY共に移動量0ならば袋文字とする。
繰り返し数補助色による外枠の太さを指定する。
赤輝度補助色赤輝度を指定する。
青輝度補助色青輝度を指定する。
緑輝度補助色緑輝度を指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#module
#deffunc decmes str msg, int x, int y, int rep, int r, int g, int b, local cr, local cg, local cb, local , local csrxt, local csryt, local bmscr
	mref bmscr, 67
	cr = bmscr.40 & 255       // カレントカラー赤輝度
	cg = bmscr.40 >> 8 & 255  // カレントカラー青輝度
	cb = bmscr.40 >> 16 & 255 // カレントカラー緑輝度
	// 1回以上繰り返す場合
	if rep > 0 {
		if r >= 0 & g>= 0 & b >= 0 : color r, g, b
		// 影(3D)文字
		if x | y {
			repeat rep
			  csrxt = ginfo_cx : csryt = ginfo_cy
			  pos ginfo_cx, ginfo_cy : mes msg
			  pos csrxt + x, csryt + y
			loop
		// 袋文字
		} else {
			csrxt = ginfo_cx : csryt = ginfo_cy
			repeat (rep * 2 + 1) * (rep * 2 + 1)
			  pos cnt \ (rep * 2 + 1) + csrxt, cnt / (rep * 2 + 1) + csryt : mes msg
			loop
			pos rep + csrxt, rep + csryt
		}
	}
	color cr, cg, cb
	mes msg
	return
#global

	font "MS 明朝", 64, 1
	redraw 0
	color 255
	pos 150, 50 : decmes "てすと。", 2, 1, 5, 150, 50, 50
	color ,255
	pos 300, 160 : decmes "袋文字列!", , , 2, , 100
	color , 100, 255
	pos 80, 350 : decmes "ちょ〜浮出しぃ", 1, -2, 30, 50, 50, 100
	redraw 1