イルリッヒたん@Wiki

GUI関連3

最終更新:

匿名ユーザー

- view
管理者のみ編集可

ウィンドウのスキンに画像を貼る

<Version 0.12.0>


ウィンドウもボタンなどと同じGUI部品なのでGUIのスキンに画像を貼るの方法でいけるのだが、ただ貼るだけじゃダメ。
何がダメかって言うと、画像を張るとボタンが隠れてしまうし、カラーキーを設定しているとその部分が真っ黒になる。

カラーキーの部分に関してはaddImage()useAlphaChanneltrue にすればいい。

ウィンドウの地のスキンが表示されるようになった。

次にボタンの方だが、これは優先順位を変更すればいい。
とても簡単。
  1. getCloseButton() でポインタ取得。
  2. bringToFront() で優先順位を変える。
  3. 以上。

例:
IGUIWindow *HogeWin = Env->addWindow( rect<s32>( 280, 0, 560, 120 ), false, L"Hoge Window", 0, 110 );
Tex = Driver->getTexture( "hoge.bmp" );
Driver->makeColorKeyTexture( Tex, SColor( 0, 255, 0, 255 ) );
IGUIImage *Img1 = Env->addImage( Tex, position2d<s32>( 0, 0 ),true , HogeWin, 1000 );
IGUIButton *CloseBtn = HogeWin->getCloseButton();
HogeWin->bringToFront(CloseBtn)

上の例ではHoge Windowという名のウィンドウを作成し、そのウィンドウにhoge.bmpを貼り、bringToFront() で閉じるボタンの優先順位を上げている。

ボタンが表示されるようになった(´▽`*)

bool bringToFront( *element )
GUI部品を表示優先順位を上げる。
成功すればtrue、失敗ならfalseを返す。
IGUIElement *element 優先順位を上げる部品のポインタ。

ついでなんで、地の色も透明にしてみる。
方法はgetSkin() でポインタを取得しsetColor で色やアルファを変える。
ただし、この方法だと他のGUI部品の色やアルファも影響を受ける。
特定のGUI部品だけ変える方法があるかどうかはわからないorz

例:
IGUISkin *Skin = Env->getSkin();
Skin->setColor( EGDC_3D_SHADOW, SColor( 0, 0, 0, 0) );
Skin->setColor( EGDC_3D_FACE, SColor( 0, 0, 0, 0) );


上の例では、スキン表面の明るいところと暗いところのアルファを0にしている。
枠も消したければ、EGDC_3D_DARK_SHADOWEGDC_3D_HIGH_LIGHT のアルファも0にすればいい。
ただし、透明になってもそこには見えないウィンドウ が存在している状態なのでマウスでクリックすることが出来る。
透明部分をドラッグしてウィンドウを移動させることができるし、重なったウィンドウの隙間越しに下にあるウィンドウをクリックするなどということは出来ないということ。


名前:
コメント:
記事メニュー
目安箱バナー