CodeZine(コードジン)

特集ページ一覧

VBにおけるタイマーコントロールの基本

単純なタイマーで複雑な機能を実現する方法

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/02/29 14:00

ダウンロード サンプルソース (6.0 KB)

目次

アニメーション

 最後の例では、タイマーを使ってアニメーションを作成します。

目的

 選択ボックスをアニメーション表示し、枠線をフラッシュさせます。

方法

 多くの描画ソフトウェアで選択ボックスがアニメーション表示されていることに気付いていましたか? どんな仕組みになっているか考えたことはありますか? 以下の簡単な例を見れば、このアニメーションを再現する方法がわかります。

 これは単なるアニメーションとは少し違います。選択ボックスの位置、現在のアニメーションのステータス、およびその他いくつかの項目を記録しておく必要があります。

 今回の例では、選択ボックスの描画と設定のコードについては説明せず、描画した後でそれをどのように動かすかという部分を取り上げます。

 プロジェクト内で、フォームにピクチャボックスを追加し、フォーム全体を覆うように配置します。選択ボックスを作成するためのMouseUpおよびMouseDownイベントを追加します(実際のコードはダウンロード用のプロジェクトに含まれています)。フォームにタイマーを追加します。

 選択ボックスの位置とサイズは、マウスクリック関連のイベントを通じて変数に格納しておきます。この変数は、選択ボックスアニメーションの上端、左端、幅、および高さの値を格納します。

 選択ボックスの範囲が決まったら、タイマーを起動してアニメーションを実行します。マウスがクリックされたらタイマーを停止し、それによってアニメーションが停止するので、選択ボックスは元の状態に戻ります。

リスト3
[General]
Private Type RECT
   Left As Long
   Top As Long
   Width As Long
   Height As Long
End Type
Private SelRect As RECT
Private SelRect_S As Boolean

[Picture1_MouseDown]
   If Button = vbLeftButton Then
      Timer1.Enabled = False
      If SelRect_S Then
         Picture1.DrawStyle = vbSolid
         Picture1.Line (SelRect.Left, SelRect.Top)- _
            (SelRect.Left + SelRect.Width, SelRect.Top + _
             SelRect.Height), , B
         Picture1.DrawStyle = SelDrawType
      End If
   End If

[Picture1_MouseUp]
   If Button = vbLeftButton Then
      Timer1.Enabled = True
      Timer1.Interval = 10
   End If

[Timer1_Timer]
SelRect_S = Not (SelRect_S)
Picture1.DrawStyle = vbSolid
Picture1.DrawMode = 6 'inverted
Picture1.Line (SelRect.Left, SelRect.Top)-(SelRect.Left + _
               SelRect.Width, SelRect.Top + SelRect.Height), , B
Picture1.DrawStyle = SelDrawType

 このアニメーションでは、単純に選択ボックスを一定の間隔で反転表示させています。ダウンロード用のプロジェクトでは選択ボックスが破線になっているので、アニメーションにするとちょうどよい視覚的効果が得られます。

終わりに

 一見したところ、タイマーコントロールは実用性がないように見えるかもしれません。初心者は最初にこれをストップウォッチタイマーであると誤解してしまうため、そのような使い方をしようとします。しかしこれがストップウォッチのような動作をせず、しかもその機能を実現するにはさまざまなコーディングが必要だと気付いた後は、多くの初級者がタイマーを役に立たないコントロールとしてそのまま脇に追いやり、CPUとアプリケーションを酷使する、長々しいループを多用した関数を使うことになります。

 タイマーと、ここに挙げた例をきちんと理解すれば、アプリケーションとCPU使用量のどちらの点でも、タイマーの使用がどれほど効果的であるかがわかるでしょう。

 この記事のダウンロード用プロジェクトには、それぞれ異なる時間間隔で使用される5つのタイマー機能が含まれています。

  1. 時刻の表示
  2. 画像の移動
  3. 選択ボックスのアニメーション
  4. シンプルな線画アニメーション
  5. カウントダウンタイマー

 これらの例をタイマーの活用に役立てていただければと思っています。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:japan.internet.com翻訳記事

もっと読む

著者プロフィール

  • Richard Newcombe(Richard Newcombe)

    Commodore 64の時代からコンピュータに親しみ、今では優れたプログラマー、デザイナーとして活躍。30代前半で、コンピュータから離れることはめったになく、コンピュータ関連の問題ならばいつでも助力とアドバイスを惜しまない人物。最近は本サイトに関するいくつかのプロジェクトに従事。

  • japan.internet.com(ジャパンインターネットコム)

    japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.c...

あなたにオススメ

All contents copyright © 2005-2022 Shoeisha Co., Ltd. All rights reserved. ver.1.5