Public Class Form1 'アニメーション用変数 0:pic1 , 1:pic2 Dim idx As Integer Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Visible = False 'マスクデータローディング Call MRLoad() 'フォームスタイル変更 Call MRFormStyle(Me) With Me 'フォームを非表示 .Visible = False 'pic1を設定 Call MRFunc(r_pic1, Me) '表示位置設定 'getTaskbarTop()はタスクバーの上の位置 .Top = getTaskbarTop() - .Height + 8 .Left = 0 '最前面に表示 Call ToTopWindow(Me, True) 'フォームを表示 .Visible = True End With '最初はpic1 idx = 0 'タイマーを動かす With Timer1 .Interval = 100 .Enabled = True End With End Sub Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick If getActiveWindowTitle() <> Me.Text Then Me.Left = getActiveWindowLeft() Me.Top = getActiveWindowTop() - getMRRectW(r_pic1) + 8 End If If idx = 0 Then If Int(Rnd() * 30) = 0 Then idx = 1 Call MRFunc(r_pic1, Me) End If Else idx = 0 Call MRFunc(r_pic2, Me) End If End Sub Private Sub Form1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseClick Application.Exit() End Sub End Class |
この、30行足らずのプログラムを実行すると次のように動きます。
@起動直後、中央に作成したbmpのキャラクターが四角い枠無しで表示。
Aアクティブウィンドウが変わるとそのウィンドウの左上にキャラクターが移動。
Bキャラクターは、まばたきの簡単なアニメーションをする。
Cキャラクターをクリックしたら終了。
実行画面です。 (画面はVB6.0版です)
通常、VBで枠無しのキャラクターを表示するとなると、API関数を呼んだり
キャラクターのマスクデータを割り当てたりと、多くのプログラムを書かなければ出来ません。
でも、MakeRGNを使えば、「Call MRFunc(0, Me)」この1行で全ての処理が済みます。
この命令だけで指定のフォームが枠無しのキャラクターに変わるのです。
また、プログラムでは見えない部分、画像を変換して作成されるマスクデータは、ボタン一つで作ることが出来ます。
面倒な設定は何一つ必要ありません。
更に、画像表示関係でよく使う(でもVBではサポートされていない)関数もいくつか用意しています。
サンプルリストでは、以下の2つを使っています。
・getActiveWindowLeft:アクティブなウィンドウのX座標
・getActiveWindowTop :アクティブなウィンドウのY座標
このように、MakeRGNは、枠なし画像表示を簡単に表示させることで プログラムのメインとなる「どのように見せるか」、「どう動かすか」の部分を
集中して開発できるようにするための、開発支援ツールです。