画像をリサイズする命令

画像のサイズを変更するには、「画像リサイズ」命令などを使います。リサイズ比率や処理速度などの細かい処理内容の違いで、以下の4つの命令があります。いずれも引数の取り方は同じで、「OBJW,Hで〜」「W,Hへ〜」と使います。

画像リサイズ
普通にサイズ変更を行う。
画像高速リサイズ
高速でサイズ変更を行う。その分、「画像リサイズ」よりも少し粗く、リサイズ時の「余り」も生じる。
画像比率変えずリサイズ
元の画像の縦横比を変えずにサイズ変更を行う。
画像比率変えず中央リサイズ
元の画像の縦横比を変えずにサイズ変更を行い、さらに中央移動する。リサイズ時の「余り」部分は「塗り色」で埋める。

いずれの命令も、対象部品OBJがイメージ部品なら、部品そのもののサイズ変更も行いますが、サイズ変更時の幅, 高さをどのように変更するかや、サイズ変更によって生じる「余り」部分の扱いなどで少しずつ処理が違います。

!WW = 100 ※この幅にリサイズ
!HH =  50 ※この高さにリサイズ

母艦を青色で画面クリア。※変化が分かりやすいよう

テスト1とはイメージ
そのサイズは『0,0,50,100』
これを黄色で画面クリア
その0,0から50,50へ円

テスト2とはイメージ
そのサイズは『150,0,250,100』
その画像は『テスト1』

テスト3とはイメージ
そのサイズは『300,0,400,100』
その画像は『テスト1』

テスト4とはイメージ
そのサイズは『450,0,550,100』
その画像は『テスト1』

1秒待つ

テスト1をWW,HHへ画像リサイズ
テスト2をWW,HHへ画像高速リサイズ
テスト3をWW,HHへ画像比率変えずリサイズ
テスト4をWW,HHへ画像比率変えず中央リサイズ

画像をコピーする命令

描いた画像を別の場所へコピーしたりするには、「画像コピー」命令などを使います。

画像コピー
画像全体を別の部品にコピーする。
画像部分コピー
画像の一部分だけを別の部品にコピーする。
画像半透明コピー
画像全体を別の部品に半透明にして重ね合わせコピーする。
母艦を青色で画面クリア。※変化が分かりやすいよう

コピー元とはイメージ
そのサイズは『0,0,50,100』
これを黄色で画面クリア
その0,0から50,50へ円

コピー先1とはイメージ
そのサイズは『150,0,250,100』
その0,0から50,50へ四角

コピー先2とはイメージ
そのサイズは『300,0,400,100』
その0,0から50,50へ四角

コピー先3とはイメージ
そのサイズは『450,0,550,100』
その0,0から50,50へ四角

1秒待つ

コピー元をコピー先1の25,25へ画像コピー
コピー元の0,25,50,50をコピー先2の25,25へ画像部分コピー
コピー元をコピー先3の25,25へ75で画像半透明コピー

「画像合成」命令

キャラクターの絵を背景画像に重ね合わしたりするには、「画像合成」命令を使います。「OBJ1OBJ2X,Yへ画像合成」と使います。

背景画像とはイメージ
その画像は「{ランタイムパス}doc\pic\map.gif」

キャラ画像とはイメージ
その画像は「{ランタイムパス}doc\pic\hito.gif」

1秒待つ

キャラ画像を背景画像の0,0へ画像合成

対象画像OBJ1の一番左上の1ピクセルの色を透過色として扱い、背景画像OBJ2の(X,Y)の位置に合成します。この例では、「キャラ画像」の左上の1ピクセルが背景色の黒色なので、「背景画像」の上に合成すると黒色の部分以外が背景になります

特殊な画像合成(コピー)をする命令

キャラクターの画像を背景に合成させる便利な命令を扱いましたが、この命令は簡易版です。きちんとやるならば、マスクを作成し、背景画像に論理積(AND)合成し、そしてキャラ画像を背景画像に論理和(OR)合成します。

背景画像とはイメージ
その画像は「{ランタイムパス}doc\pic\map.gif」

キャラ画像とはイメージ
その位置は背景画像の右側
その画像は「{ランタイムパス}doc\pic\hito.gif」

マスク画像とはイメージ
その位置はキャラ画像の右側
その画像は『キャラ画像』

合成画像とはイメージ
その位置はマスク画像の右側
その画像は『背景画像』

マスク画像を黒色で画像マスク作成
マスク画像を合成画像の0,0へ画像ANDコピー。
キャラ画像を合成画像の0,0へ画像ORコピー。

画像マスク作成

まずはマスクを作成する命令です。「OBJCで画像マスク作成」と使います。透過色Cで対象画像OBJのマスクを作ります。対象画像は、指定した色Cは白色に、それ以外の色は黒色に描き換えます。

画像ANDコピー

次に論理積で合成します。「OBJ1OBJ2X,Yへ画像ANDコピー」と使います。画像OBJ1と対象画像OBJ2の各ピクセルの色の論理積を取り、OBJ2を描き換えます。

次の節で詳しく扱いますが、色は整数で表現されるので、その整数値同士で論理積演算(AND)を行うということです。

イメージとしては、OBJ1とOBJ2の各ピクセルの色を、暗い色が残るように集めて合成する感じです。黒色が最も暗い色なので、どの色と合成しても残ります。逆に、白色は最も明るい色なので、全ての色に負けます(他方の色が必ず残る)。

画像ORコピー

次に論理和で合成します。「OBJ1OBJ2X,Yへ画像ORコピー」と使います。画像OBJ1と対象画像OBJ2の各ピクセルの色の論理和を取り、OBJ2を描き換えます。

イメージとしては、OBJ1とOBJ2の各ピクセルの色を、明るい色が残るように集めて合成する感じです。白色は最も明るい色なので、どの色と合成しても残ります。逆に、黒色が最も暗い色なので、全ての色に負けます。

画像XORコピー

ついでにもう一つ、似たような命令として排他的論理和(XOR)を取る命令もあるので、紹介しておきましょう。「OBJ1OBJ2X,Yへ画像XORコピー」と使います。画像OBJ1と対象画像OBJ2の各ピクセルの色の排他的論理和を取り、OBJ2を描き換えます。

イメージとしては対象画像OBJ2を反転させる感じです。そのとき鍵にする画像OBJ1によって反転の仕方が変わります。二度反転すると元に戻りますが、違う鍵で合成しても元には戻りません。