コマンドによるウィンドウサイズの変更方法

uLilithでは特定のコマンドを組み合わせることによって、
ウィンドウの表示サイズや各アイテムの基準位置を変更することができます。
これにより、フェイスの表示後にウィンドウサイズを変更させるスイッチを作成することができます。


ウィンドウサイズの変更 - ChangeWindowAreaコマンド

ChangeWindowAreaコマンドを使用すると、
デスクトップ画面端へスナップする(ある程度端に近づくと密着する)ときに確保される領域などに関係する
ウィンドウ領域の位置・幅・高さを変更できます。
ウィンドウ領域を変更しても特に見た目は変わりませんが、
ResizeCanvasコマンドでキャンバス(アイテムの描画領域)を変更しただけでは
画面端へスナップするウィンドウ範囲は変わらないので、
このChangeWindowAreaコマンドで変更する必要があります。

Command = ChangeWindowArea
CommandParamType = String
CommandParam = 0, 0, 300, 200
上のように、新しいウィンドウ領域の上下左右の端の座標を、
現在のウィンドウの左上座標を基準にパラメータを指定します。
CommandParamキーに
left, top, right, bottomの順で4つの値を半角カンマとスペースで区切って設定して下さい。
leftで「新しいウィンドウ領域の左端位置」、topで「新しいウィンドウ領域の上端位置」、
rightで「新しいウィンドウ領域の右端位置」、bottomで「新しいウィンドウ領域の下端位置」を
それぞれ指定します。
左上座標からみてプラス数値なら右・下に、マイナス数値なら左・上になりますが、
基本的には0以上の(プラスの)数値を記入してください。
また、数値は10進数(0102030…)しか認識されません。
元の値のまま変更しない項目がある場合は、その項目に「-1」を設定して下さい。
-1」が入力された項目は現在の値が使用されます。

ResizeCanvasコマンドでキャンバス(アイテムの描画領域)を拡張する場合
 右・下方向にしか拡張できないので、
 ChangeWindowAreaコマンドでマイナス数値を指定して
 ウィンドウ領域を左・上方向へ変更しても特に意味はありません。
 (右下方向に拡張するために「ウィンドウサイズ・キャンバスサイズ両方を右下に広げた」場合
  フェイス内に表示されているアイテムを右・下に動かしたときは、
  新しいキャンバスサイズの範囲内であれば問題なく表示されますが、
  左上方向に拡張しようと、「ウィンドウサイズを左上に広げた」場合は
  キャンバスサイズは左上には広げられないので
  フェイス内に表示されているアイテムを左・上へ移動したとしても
  元のウィンドウ(キャンバス)範囲から左上にはみ出た部分は消えてしまいます。)

例えば
CommandParam = 0, 0, 200, 150
なら、
領域の左端は「左上座標から0px右」、領域の上端は「左上座標から0px下」、
領域の右端は「左上座標から200px右」、領域の下端は「左上座標から150px下」までの設定になり、
元の左上座標と同じ位置から『200×150px』の領域が新しいウィンドウ領域に変わります。
パラメータの1つ目・2つ目に0を指定してあれば
新しいウィンドウ領域の左上座標は元と同じ位置になるので、それぞれ
『右端の位置(パラメータ3つ目)』は「新しいウィンドウ領域の幅」の指定と同じ、
『下端の位置(パラメータ4つ目)』は「新しいウィンドウ領域の高さ」の指定と同じ意味になります。
普通にウィンドウ領域のサイズを変更する場合は上記のように指定してください。

CommandParam = 20, 30, 200, 150
なら、
領域の左端は「左上座標から20px右」、領域の上端は「左上座標から30px下」、
領域の右端は「左上座標から200px右」、領域の下端は「左上座標から150px下」までの設定になり、
『元の左上座標から20px右・30px下』の位置から『180×120px』の領域がウィンドウサイズに変わります。
パラメータの1つ目・2つ目が0以外の場合、それぞれ
『右端の位置(パラメータ3つ目)』-『左端の位置(パラメータ1つ目)』=「新しいウィンドウ領域の幅」に、
『下端の位置(パラメータ4つ目)』-『上端の位置(パラメータ2つ目)』=「新しいウィンドウ領域の高さ」に
なります。
ウィンドウ領域の左上座標を変更したい場合は上記の例のように指定しますが、
ResizeCanvasコマンドでのキャンバスサイズの変更では
キャンバスの左上座標は変更できないので、サイズ変更後のアイテム移動には気をつけてください。
(ウィンドウ領域のサイズ外でも、キャンバスサイズ内であればアイテムが描画されるので
 新しいウィンドウ領域の左上にアイテムを移動する場合は、はみ出て表示されてしまいます。)

なお、パラメータの指定した数値のそれぞれ
1つ目(left:左端)の数値が3つ目(right:右端)の数値より大きかったり
2つ目(top:上端)の数値が4つ目(bottom:下端)の数値より大きかったりすると
新しいウィンドウサイズとして指定される領域の幅・高さが0以下になってしまうので
エラーとなりコマンドは無効になります。


キャンバスサイズの変更 - ResizeCanvasコマンド

ResizeCanvasコマンドを使用すると、
フェイスウィンドウ内のアイテムの描画可能領域(キャンバス)のサイズを変更できます。
このコマンドでキャンバスを広げると、
元のサイズよりも広い範囲にアイテムを表示することができます。
逆にキャンバスを小さくすると、表示範囲を元のサイズより狭い範囲に縮めることもできます。
ModifyItemコマンドで元のフェイスのサイズよりも広い範囲で
アイテムの位置やサイズを変更する場合に、
このResizeCanvasコマンドを利用してキャンバスを広げてください。
(キャンバスを広げないと、元のサイズからはみ出た部分は表示されなくなってしまいます。)
幅・高さどちらかを元の値のまま変更しない場合は、変更しないほうの数値に「-1」を設定して下さい。
-1」が入力された項目は現在の値が使用されます。
なお、キャンバスサイズを変更しても
フェイスウィンドウが画面端へスナップするウィンドウ範囲は変わらないので、
ChangeWindowAreaコマンドでウィンドウサイズもあわせて変更してください。

Command = ResizeCanvas
CommandParamType = String
CommandParam = 200, 100
上のように、パラメータには新しいキャンバスサイズの「幅」・「高さ」の順で
半角カンマとスペースで区切って数値を指定してください。
サイズを変更しても、キャンバスサイズの左上端の位置は変わらないので
キャンバスを元のサイズより大きくする場合、右・下方向へ拡張することになります。


グローバルオフセットの変更 - ModifyGlobalOffsetコマンド

ModifyGlobalOffsetコマンドを使用すると、
すべてのアイテムの相対座標補正である、『グローバルオフセット』を変更します。
『グローバルオフセット』が変更されると、これにあわせて
すべてのアイテムのPosXPosYの数値が増減します。
つまり、すべてのアイテムの表示位置を同時に上下左右に移動するのと同じことになります。

Command = ModifyGlobalOffset
CommandParamType = String
CommandParam = 20, 30
上のように、パラメータには新しいXオフセット,Yオフセットを
半角カンマとスペースで区切って数値を指定してください。
プラス数値なら初期位置から右・下に、マイナス数値なら左・上に移動します。

なお、パラメータに0以外を設定して上下左右に移動した後で
もう一度ModifyGlobalOffsetコマンドを実行し元の位置に戻す場合は
パラメータに
CommandParam = 0, 0
を設定してください。
最初に動かした分から計算してマイナス(プラス)して0になるような数値を指定しても、
(例えば、「20, 30」で動かしたので元に戻そうと「-20,-30」を指定した場合)
元の位置には戻らず、パラメータに記入したとおりの位置に動いてしまいます。


フェイスのウィンドウサイズを変更するアイテムの作成例

フェイスウィンドウを左上方向に拡張する例を説明します。

ResizeCanvasコマンドでは、キャンバスサイズを右下方向にしか拡張できないので、
フェイス全体を左上に拡張したい場合は、
ChangeWindowAreaコマンド・ResizeCanvasコマンドでウィンドウ・キャンバスサイズを右下に拡張して、
ModifyGlobalOffsetコマンドで全アイテムを右下に移動してから
背景画像アイテムだけを左上に広げることによって
擬似的に左上に拡張することになります。

具体的には以下のような手順になります。
(例:300×140pxのウィンドウを左上に50pxずつ広げる場合)

1:ResizeCanvasコマンドでキャンバスサイズを右と下に50pxずつ広げて、350×190pxにする
Command = ResizeCanvas
CommandParamType = String
CommandParam = 350, 190

2:ChangeWindowAreaコマンドでウィンドウサイズを以下のように設定して、
     新しいウィンドウサイズ・位置を
     元の左上座標と同じ位置から、350×190pxのサイズになるように変更する
Command = ChangeWindowArea
CommandParamType = String
CommandParam = 0, 0, 350, 190

3:ModifyGlobalOffsetコマンドでグローバルオフセットをXYそれぞれ+50pxに変更して
     全てのアイテムを50pxずつ右下へ動かす
Command = ModifyGlobalOffset
CommandParamType = String
CommandParam = 50, 50

4:背景にあたる画像アイテムのPosXPosYをそれぞれ-50
     Width350Height190に変更して背景画像を左上に50pxずつ広げる

[BgImg]というフィールド名で背景の画像アイテムを設定している場合
[BgEnlarge]
Category = Parameters
TargetItem = BgImg
PosX = -50
PosY = -50
Width = 350
Height = 190
上のようなParametersフィールドを作って、以下のModifyItemコマンドを実行する
Command = ModifyItem
CommandParamType = String
CommandParam = BgEnlarge
※背景の画像アイテムはDynamicImageStaticImageで作成してください。
BackImageで作成すると、設定の変更ができません。

こうすると、実際にはフェイスウィンドウは右下に拡張されましたが
見た目では背景が左上に広がったようになります。

なお、元のサイズに戻す場合は上の手順の逆の作業を行ってください。

I:背景画像アイテムのサイズを初期サイズに戻す(4:の逆)
「背景画像アイテムのサイズを変更する別のParametersフィールド」を作っておいて、
ModifyItemコマンドを実行してサイズを変更します。
[BgReduce]
Category = Parameters
TargetItem = BgImg
PosX = 0
PosY = 0
Width = 300
Height = 140

Command = ModifyItem
CommandParamType = String
CommandParam = BgReduce

II:ModifyGlobalOffsetコマンドでグローバルオフセットをXY両方とも0にする(3:の逆)
Command = ModifyGlobalOffset
CommandParamType = String
CommandParam = 0, 0
※サイズを拡張するときに+50pxにしたからといって、戻すために-50を指定してしまうと
 元の表示位置から上・左50pxの位置まで動いてしまうので、
 元の位置に戻す場合は0を指定してください。

III:ResizeCanvasコマンドでキャンバスサイズを元のサイズ(300×140px)に戻す(1:の逆)
Command = ResizeCanvas
CommandParamType = String
CommandParam = 300, 140

IV:ChangeWindowAreaコマンドでウィンドウサイズを
     元の左上座標と同じ位置から、300×140pxのサイズになるように変更する(2:の逆)
Command = ChangeWindowArea
CommandParamType = String
CommandParam = 0, 0, 300, 140

ウィンドウを右下に拡張する場合は、グローバルオフセットの変更は必要ありません。
背景画像も表示サイズを変更するだけでいいので、背景画像の左上位置座標の変更も必要ありません。


ini記述例サンプル

最後に、この変更例のサンプルフェイスを添付しておきます。
resizecommand_test.zip

このサンプルフェイスに切り替えると、以下のようなフェイスが表示されます。
青いボタンにウィンドウサイズを拡大するコマンドシーケンスを設定してあります。
このボタンをクリックすると、
このようにフェイスのサイズが変更され、青いボタンが緑色のボタンと入れ替わります。
緑色のボタンにはウィンドウサイズを縮小するコマンドシーケンスを設定してあるので
このボタンをクリックすると元のサイズに戻ります。
(同時に、サイズを拡大する青いボタンに入れ替わります。)

このフェイスの背景画像はStaticImageアイテムで作成し、
画像の表示位置はアイテム領域の右下に配置、背景色も設定しているので
表示サイズが変更されると広がった分(画像のない部分には)背景色が表示されます。

背景画像の表示サイズを変更する場合、
『画像の表示位置が左上・画像の繰り返しや拡大縮小をしない・背景色が透明』のままだと、
単に画像が左上に移動しただけに見えてしまうので、表示サイズを広げても問題ないように
背景色の設定か画像の繰り返し表示や拡大縮小表示をしておくといいでしょう。

画像サイズ・位置を変更するなど元から表示していた画像の設定を変更しなくても、
ウィンドウサイズを拡張するのと同時に、
あらかじめ準備しておいた(IsHidedキーで非表示にしておいた)
別の背景画像アイテムをShowItemコマンドで表示して新しい背景として使用する、
というやり方でもかまいません。
最終更新:2012年12月25日 23:12