Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2009-05-25

テキストウィンドウを表示するよ!

| 20:48

【せんせい】

 今日は、文章を表示するためのテキストウィンドウを表示します。

 昔だと、黒く塗りつぶされているのが普通でしたが、時の流行は半透明で、後ろの画像が透けて見えるのが普通みたいです。

 なでしこには、画像半透明コピーあるので、カンタンですね!

【でし】

 できました! 透けてます。

 しかし、先生。ウィンドウの枠の部分も一緒に透けてるんですが…

【せんせい】

 たしかに、枠のあるテキストウィンドウを表示する場合に、これはよろしくありません。

 というわけで、また命令を作ってみましたよ!

 これは、あらかじめ透過色で塗りつぶしておいた部分は普通に透過し、矩形指定した範囲は半透明にし、それ以外のところは普通に合成するものです。

 ちょっと関数名がいけてないかなあ(汗)

 ともかくも、こんな感じ!

#-----母艦設計-----------------------------------------------
!母艦設計=「母艦の可視はオフ母艦のタイトルは「アドベンチャー」
母艦を$000000で画面クリア母艦のスタイルは「枠固定」
母艦オフに最大化ボタン有効変更。
母艦のクライアント幅は640。母艦のクライアント高さは480。
母艦中央移動
母艦の可視はオン。
#------------------------------------------------------------

#-----宣言---------------------------------------------------
裏_背景とはイメージの可視はオフ。
裏_背景の幅は640。裏_背景の高さは480。

裏_立ち絵とはイメージの可視はオフ。

裏_テキストウィンドウとはイメージの可視はオフ。
テキストウィンドウXとは整数=0
テキストウィンドウYとは整数=360
テキストウィンドウ幅とは整数=640
テキストウィンドウ高さとは整数=120

表画面とはイメージの可視はオン。
表画面の幅は母艦のクライアント幅。表画面の高さは母艦のクライアント高さ。
表画面のXは0。表画面のYは0。
#------------------------------------------------------------

#-----背景を表示---------------------------------------------
裏_背景の画像は「背景1.jpg」
裏_背景を表画面の0,0へ画像コピー。
#------------------------------------------------------------

#-----立ち絵を表示-------------------------------------------
裏_立ち絵の画像は「NAKO.bmp」
裏_立ち絵を表画面の0,0へ画像合成改。
#------------------------------------------------------------

#-----テキストウィンドウを表示-------------------------------
裏_テキストウィンドウの画像は「TXTWIN2.bmp」
裏_テキストウィンドウの15,13,608,95を表画面のテキストウィンドウX,テキストウィンドウYへ50で画像部分透過コピー。

#裏_テキストウィンドウの画像は「TXTWIN.bmp」
#裏_テキストウィンドウの5,5,630,110を表画面のテキストウィンドウX,テキストウィンドウYへ50で画像部分透過コピー。

#裏_テキストウィンドウを表画面のテキストウィンドウX,テキストウィンドウYへ80で画像半透明コピー。
#------------------------------------------------------------


#------------------------------------------------------------
# 関数
#------------------------------------------------------------
●画像部分透過コピー({グループ=?}コピー元のX,Y,W,Hを{数値=$00FF00}透過色で{グループ=?}コピー先のX2,Y2へ{数値=50}透明度で)
  処理用をイメージとして作成。処理用の可視はオフ。
  処理用の幅はW。処理用の高さはH。

  #半透明にしたい部分を処理用に移す
  コピー元のX,Y,W,Hを処理用の0,0へ画像部分コピー

  #コピー元の半透明にしたい部分以外をコピー先へ合成
  塗り色は透過色。線色は透過色。線太さは0。
  コピー元のX,YからX+W,Y+Hへ四角。
  コピー元をX,Yでコピー先のX2,Y2へ画像合成改。
  
  #半透明にしたい部分を透過コピー
  処理用をコピー先のX+X2,Y+Y2へ透明度で画像半透明コピー
  
  処理用→壊す。
#------------------------------------------------------------
●画像合成改({グループ=?}Sを{数値=0}X,{数値=0}Yで{グループ=?}DのX2,Y2へ)
 Cとは整数
//マスク画像はSの透過色を黒色それ以外を白色にしたもの
 マスク画像をイメージとして作成
 マスク画像→可視はオフ
 マスク画像→画像はS→名前
 マスク画像のX,Yを画像色取得してCに代入
 マスク画像をCで画像マスク作成
//ソース画像はSの透明色を黒色に変換したもの
 ソース画像をイメージとして作成
 ソース画像→可視はオフ
 ソース画像→画像はS→名前
 マスク画像を画像ネガポジ
 マスク画像をソース画像の0,0へ画像ANDコピー
 マスク画像を画像ネガポジ
//合成実行
 マスク画像をDのX2,Y2へ画像ANDコピー
 ソース画像をDのX2,Y2へ画像ORコピー
 マスク画像→壊す
 ソース画像→壊す
#------------------------------------------------------------

【でし】

 なるほど、これでちょっと複雑な形のウィンドウも表示できるようになりましたね!

 あと、ウィンドウ内に柄が入っていてもOKなんですね。

【せんせい】

 はい

 ただし、コードを見てもらえばわかりますが、半透明にする部分は、四角くしか指定できず、半透明を指定した範囲内は透過色があっても透過されません(の色が半透明で表示されちゃいます)

 これはまあ、とりあえず仕様ということで;

トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20090525